Skip to main content

Full text of "Your_Commodore_Issue_17_Feb_86"

See other formats


AN ARGUS SPECIALIST PUBLICATION 



FEBRUARY 1986 



£I.OO 



YOUR BEST INDEPENDENT COMMODORE MAGAZINE 



your i 




* J 



PROGRAM PROTECTION - 
KEEP YOUR PROGRAMS SAFE 







I 



COMMODORE 64 




DRAGONSKULLE", "OUTLAWS", "BLACKWYCHE", "IMHOTEP" recommended retail price 
£9.95 inc VAT. Available from W.H.SMITHS, BOOTS, J.MENZIES, WOOLWORTHS 
and all good software retail outlets. Also available from 
ULTIMATE FLAY THE GAME, The Green, Ashby-de-la-Zouch, Leicestershire LE6 5JU 

(P&P are included) Tel: 0530 411485 




FEBRUARY 1986 



VOLUME 2 
NUMBER 5 



Editor: 
Sluari Cooke 

Assistant Editor; 

Marie Curry 

Advertisement Manager: 

Mike Segrue 

Advertisement Copy 
Control: 

Laura Champion 

Group Editor: 

Dave Bradshaw 

Group Managing 
Editor: 

Wendy Palmer 

Managing Director; 

Peter Welham 

Origination: 

Ebony Typesetting 

Design: 

Argus Design 



Editorial & Advertisement Office 
No 1 Golden Square, 
London W1R 3AB 
Telephone 01 -437 0626 
Telex 8811896 

Your Commodore is a monthly 
magazine appearing on the first 
Friday of each month. 

Distribution by Argus Press 
Sales & Distribution Ltd 12-18 
Paul Street. London EC2A 4JS 
Printed by Alabaster Passmore 
& Sons Ltd, Tovil, Maidstone, 
Kent 

Subscription rates upon 
application to Your 
Commodore Subscriptions 
Department, Infonet Ltd. Times 
House. 179 The Marlowes. 
Hemel Hempstead, Herts HP1 
IBB 



The contents of this publication 
including all articles, designs, 
plans, drawings and programs 
and all copyright and other 
intellectual property rights 
therein belong lo Argus 
Specialist Publications Limited. 
All rights conferred by the Law 
of Copyright and other 
intellectual property rights and 
by virtue of international 
copyright conventions are 
specifically reserved to Argus 
Specialist Publications Limited 
and any reproduction requires 
the prior written consent of the 
Company. e 1986 Argus 
Specialist Publications Limited 




■ Count on Your Commodore 7 

Your 64 learns lo add up. 

■ Stop Thief! 12 

Gel those programs under lock and key. 

■ Interrupts 32 

Introducing IRQ interrupts. 

■ The Beat Goes On 43 

Switch on to Syntron's Digidrum. 

■ Now Hear This 44 

Rainbird's Music System under the microscope. 

■ Gremlin Grilling 52 

Inside a little monster's office. 

■ Do You Need Your Head Examined? 86 

Dave Crisp reviews a utility to re-align your disk drive. 



■ Mach 4 / 8 

Steve Carrie adds a Machine Code disassembler. 

■ Froggy 40 

More to add to your arcade game design. 

■ Language Lab - Pilot 54 

Make your 64 bilingual. 

■ Build a Better Basic 62 

Your Basic grows still more. 

■ Programming Projects 7Q 

Archaeology and micros do mix. 

REGULARS ^^^B 

■ Data' Statements 4 

■ Scratch Pad 1 0 

■ Teacher's Pet 30 

■ In Arcadia 36 

■ Game of the Month 38 

■ Action Replay 46 

■ Missives 53 

■ Sense of Adventure 72 

■ Communications Corner 74 

■ Easy Entry 84 

■ Listings 87 



■ Magician's Ball Competition 16 

A chance to win Global Software's new adventure. 

■ Sprite Ideas 82 

Create a sprite and win £10. 

| GAMES AND UTILITIES \ 

■ Break The Speed Limit 22 

High speed tape for your C-16 and Plus/4. 

■ Spike - Programmer of the Year 56 

A great game from a great programmer. 



Soft in the Head- 



YES, IT HAD TO HAPPEN SOME TIME. 
Superman has got fed up of doing his 
quick change act in the confines of a 
phone box and will now be executing this 
incredible feat of contortion inside your 
computer. Beyond has recently launched 
Superman The Computer Came, which 
features Superman, on the side of good, 
fighting Darkseid for control of a metro- 
polis. 

According to Beyond, the game con- 
tains a minimum of rules and is 
punctuated with breathtaking animated 
sequences. It's not a bird or a plane but it 
is £9.95. 

Also in Beyond's autumn release 
package were EnigmaForce, the sequel to 
Shadowfire and Spy vs Spy: The Island 
Caper, sequel to Spy vs Spy (as if you 
hadn't guessed). Both cost £9.95 on 
cassette. 

Another superman, international 
goalkeeper Ray Clemence, has put his 
stamp of approval on Macmillan 
Software's new release World Cup 
Soccer. The package contains two 
programs and a book which provide 
information on the skills techniques and 
secrets of some of the world's top players. 
Goalie Ray commented: "World Cup 
Soccer is a must for any serious and 
dedicated soccer fan. Once you've 
mastered this you can sit back and watch 
the 1986 World Cup through the eyes of a 
real professional." 



Five for under a tenner 



STATEMENTS 






v-- 



at 



Feargal and friend Casey (ones on 



Domark. meanwhile, has decided lo 
try and scare us all by launching Friday (he 
13th. The Computer Came, featuring a 
mad fiend called |ason who wanders 
round a holiday camp trying to get his 
homicidal way with all the innocent 
campers. Your job is, of course, to save 
them but mind you don't panic as this 
seems to infuriate the psychopath. £8.95 
on cassette and £11.95 on disk, probably a 
game not to be played in the dark. The 
sadist's Terrormolinosl 

Ariolasoft has launched a new range of 
software for the autumn which is unusual 
because the disk versions are under flo- 
at £9.95. Frank Brunger, marketing and 
sales director, said: "The cost may be 
lower but the quality certainly isn't." The 
Cassette versions are £7.95 and the new 
titles are: Axis Assassin, D-Bug, Bug Blitz, 
Saucer Attack. All are available 




Quicksilva has come up with an arcade 
strategy game for the 64 called 
Deathwake, which features you as a 
brilliant admiral trying to rebuild your 
shattered forces so that you can destroy 
the enemy's special research lab. hidden 
in the depths of a mountainside. If you 
don't, they will finish developing the 
Ultimate Weapon - an atomic bomb. 
(Hasn't some one already developed It?) If 
you want to gain lost territory from the 
euil Alliance then you'll have to fork out 
£7.95 for the privilege. 

Ultimate has two new titles for the 
C64; Dragon Skulle and Outlaws - 
shouldn't that be Autlors? They both cost 
£9.95 on the C64 and are embellished with 
Ultimate's unmistakable brand of art 
work. 

Hewson Consultants want you to let 
the train take the strain and buy Southern 
Belle for the C64. This steam locomotive 
simulator is said by its makers to be for the 
more sophisticated' game player and it is 
rumoured that 'railway enthusiasts have 
even been buying computers specifically 
to sample its delight.' Holy smoke! 

On to more serious software, and 
Impex has produced a program called 
Font Factory which is aimed at improving 
the output from a dot matrix printer. It 
reads any standard Commodore ASCII 
file, automatically formats and prints it. 
And you get a choice of eight different 
typefaces. It incorporates control of line 
width and spacing and justification. Also 
on the disk is a program called Sign Writer 
which allows you lo produce banners 
using letters a foot high. You get both 
programs for £19.95. 

Impex has also released Fantastic Filer 
and Screen Dumper 64. Both these 
programs are £12.95 each and available on 
disk only. 

In Touch 

MICRONET HAS MOVED ITSELF INTO 
the glamorous world of pop music. Feargal 
Sharkey appeared on Celebrity Chatline 
and was greeted with an enormous 
response from Micronet members. 

Feargal has himself been a member of 
Micronet for over a year and is very 
impressed with the service, saying: "Most 
of all I find it good relaxation." He also 
loves the Celebrity Chatline in particular. 
"I think it's very entertaining." he raved. 
"It's certainly a lot more entertainingthan 
most of the programmes on TV at the 
moment. I'd rather watch Chatline than 
Coronation Street.*' Obviously an 
Eastenders fan. 

Micronet members have also been 
making an effort to help the survivors of 
(he Mexican earthquake. In the first 
month of the Mexican Aid Appeal they 
raised over £180. Donations should be 
made payable to Mexican Aid and sent to 
the address below. Micronet members 
should call page "800119836 



News 




tangled wires 



Teletext Adapter tor the C64 




New Philips monitor 



Rainbird will also be producing soft- 
ware for 16 bit computers including 
Commodore's latest little offering, the 
Amiga. Firebird will continue to burn 
brightly and independently producing 
games for 8 bit machines. 

For those who are confused about the 
function of the new Data Protection Act 
1984. the Data protection Registrar has 
produced a handy question and answer 
booklet to try and clarify the most 
important points. The Act is designed to 
protect individuals rights by allowing 
them to have access to personal inform- 
ation which various organisations may 
have on file. Subjects covered range from 
personal data held at schools and 
universities to registration for groups of 
companies. 

If you're fed up with seeing those 
horrible tangled up wires around your 
computer then Conblock Electrical 
Limited may have come up with the 
solution to your problem. Now available 
are two new adaptors, one of which can 
take up to six plugs, the other up to four. 
Both are smaller and lighter than 
traditional ones and they certainly look a 
lot better, too. 

Both come complete with plugs and 
are for use in any standard 13 amp socket. 
They also conform to the Electrical Equip- 
ment Safety Regulations 1985. 



jm_ Piii 

5?» 



mm^^ — " 

-» |W '»T. 1- 



Hard Lines 

MORLEY ELECTRONICS HAS NOW 
announced the availability of a Teletext 
Adapter for the C64. The C64 version of 
the Adapter plugs into the user expansion 
port and uses software to produce a 
simulated teletext display. 

The Commodore version costs about 
£130 and anyone interested should 
contact Morley for more details. 

There's also a new range of colour 
monitors now available from Philips. 
There are four models in the range and 
prices start at £220. 

Philips policy is to improve the clarity, 
resolution and performance of monitors 
to keep in line with improvements made 



to home computers. Philips state that the 
monitors are designed to give superior 
quality and crispness for every computing 
need. 

Generally Speaking 

FIREBIRD HAS NOW COT A BABY SISTER 
- or should that be egg. British Telecom is 
forming a new software company, which 
will be totally separate from Firebird. The 
new outfit is to be called Rainbird and will 
be headed by its namesake Tony Rainbird. 

First release from Rainbird is Island 
Logic's, The Music System. It has been 
available for the BBC computer for some 
time, but only now has a Commodore 64 
version been perfected. 



Touch Line 

Beyond, 3rd Floor, Lector Court, 151 
Farringdon Rd, London EC1R 3AD. 01 837 
2899 

Macmillan Software. 4 Little Essex St, 
London WC2R 3LF, 01 836 6633 
Domark. 01 947 5622 
Ariolasoft, 8 Westminster Palace Gardens, 
Artillery Row, London SW1P 1RL 
Quicksilva, Liberty Hse, 222 Regent St, 
London W1R 7DB, 01 439 0666 
Ultimate, The Green, Ashby de la Zouch, 
Leics LE6 5JU, 0530 411485 
Hewson Consultants. 56B Milton Trading 
Est, Milton, Abingdon, Oxon, 0235 832939 
Impex, Metro Hse, Second Way, 
Wembley, Middx. HA9 0TY. 01 900 0999 
Micronet 800. 8 Herbal Hill, London EC1R 
5EJ. 01 278 3143 

Morely Electronics. 1 Morley Place, 
Earsdon Rd, Shiremoor, Tyne & Wear, 091 
2513883 

Philips. Burston-Marsieller, 25 North 
Row. London W1R 2BY. 01 499 0414 
British Telecom. Wellington Hse. Upper 
St Martins Lane. London EC1 
The Data Protection Registrar, Springfield 
Hse, Water Kane, Wilmslow. Cheshire SK9 
5AX. 0625 535777 

Conblock Electrical Ltd, 1 Merridale Rd. 
Chapel Ash, Wolverhampton, W 
Midlands WV3 9RT, 0902 773737 
Mexican Aid. 20 Holmes Rd, Kentish 
Town, London NW5 3AR or Account 
03176762, Nat West Bank, Kentish Town 
Branch, London NW5 2DG 



Programming 




In a mathematical 



special, Nick 



Hampshire shows you 



how to use the C64*s 



arithmetic routines. 



COUNT 
ON YOUR 



Numeric Variables, 
Types and Range 

BASIC USES TWO DIFFERENT 
types of numbers, integer and 
floating point. An integer 
number is stored as two bytes 
giving a 16 bit signed number 
which can store numbers in the 
range +32767 to -32768. 
Floating point numbers require 
five bytes and can store much 
larger values in the range ± 
1.70141183 E38 to ± 2.93873588 E 
-39. In the Basic interpreter all 
calculations, whether on 

L?l e ?.l r f^-!!^ ' ".f - P « ' TjI^I L^Sf' a foaling point value, - the occupies six bytes and Fac 1 format and location of the two 
?Ifh£?,h^?^ sign, the exponent and a four startsat$61 whileFac 2startsat floating accumulators is as 

rather than simple integers or b * te mantissa. In packed mode $69. Th ~ - — 
binary values. Consequently, ' 



variablesinmemory.Unpacked 'floating point accumulator V three further areas where 

format is used when perform- and 'floating pointaccumulator floating point numbers in 

ing calculations upon floating 2'. These names are usually packed format (occupying five 

point values. In either format shortened to Fac 1 and Fac 2. bytes) are stored. These areas 

there are three components of Each floating accumulator start at $57,$5C and $26. The 



the sign is stored as bit seven of 
the most significant byte of the 
mantissa. In unpacked format 
the sign occupies its own byte. 



The Floating Point 
Accumulator 



all integer values are first 
converted to floating point 
format before any calculations 
are performed. 

The format for the storage 
of an integer value is very 
simple, consisting of two bytes 
stored as low order/high order 
byte. Negative values are 
stored in a two's complement In order, to perform arithmetic 
form, — the format is shown in operations on any floating 
Figure 1. Floating point values point value the interpreter 
are stored in either packed needs temporary storage 
form, occupying five bytes, or locations for the values being 
unpacked form in six bytes, worked upon as well as the 
Packed format is the normal result. There are two principle 

as 



Locations 




Function 


Fac 1 


Fac 2 




$61 


$69 


exponent + $80 


$62 


$6A 


mantissa msb 


$63 


S6B 


mantissa byte 2 


$64 


$6C 


mantissa byte 3 


$65 


$6D 


mantissa Isb 


$66 


$6E 


sign ($FF = - and $00 ■ +) 



5 F.EM ** REAL NUMBER FORMAT (PACKED) ** 
10 A=9 

20 C«PEEK<45>+PEEK<46>*256+2 
30 INPUT" A REAL NUMBER"; 8 
40 E=PEEK<C> 
58 N1=PEEK<C+1> 
50 M2*PEEK<C+2> 

79 N3=PEEK<C+3> 

80 M4-=PEEK<C+4> 
90 PRINT 

iee printe;mi;M2;M3;M4 

10o IFE=0THENPRINT0 : END 
M0 SG»SGN<64-<M AMD 123)) 
120 N=(M1 AND127>+123 
130 N=N*256+M2 

149 N=N*256+M3 

150 N=N*256+M4 

160 N=N*2T<E-160>*SG 

200 PRINTN Program 1 



5 REM ** REAL NUMBER FORMAT <PACKED> ** 
10 A=G 

20 C=PEEK<45>+PEEK<46)*256+2 
30 IMPUTB 

35 I FB=0THENPR I NT0 ; 0 ; 0 ; 0 ; O : PR I NT • GOTO230 
40 EX=INT<L0G<A£S(B>VL0G<2>> 

59 E=EX+129 

60 R=B-21£X 

70 SG=SGN<-B>*64+64 

80 T0=(R/2-TEX>*128 

90 M1=INT<T0)+SG 

100 T1=<TO-INT<T0>)*256 

110 M2=INT<T1> 

120 T2=<Tl-INTai>>*256 

130 M3-INKT2) 

149 T3=<T2-INT<T2>>*256 

150 M4=INT<T3) 

160 printe;mi;M2;M3;M4 

170 PRINT 
180 P0KEC/E 
190 P0KEC+1/M1 
200 P0KEC+2/M2 
210 P0KEC+3,M3 

220 P0KEC+4,M4 
230 PRINTA 

Program 2 



other locations used are: 
$68 — overflow byte for Fac 1 
$6F— sign comparison byte 
$70— rounding byte for Fac 1 

How a Floating Point 
Number is Stored 

The storage of a floating poinl 
number is fairly complex both 
in packed and unpacked 
format. The data used to store a 
floating point number can be 
divided into three components; 
the exponent, the sign and the 
mantissa. In the unpacked 
format, the exponent and sign 
both occupy one byte and the 
mantissa four bytes. The 
following is an explanation of 
each component of a floating 
point number. 

Exponent — The exponent 
indicates the position of the 
decimal point within the 
number. Bit seven of the 
exponent byte indicates the 
sign of the exponent. Thus, if 
the exponent is positive, bit 
seven is set to one and, 
therefore, the value of the 
exponent byte will always be 
greater than 128. If the 
exponent is negative then bit 
seven is set to zero and the 
exponent value is less than 128. 
The exponent is stored as a 
power of two and is multiplied 
by the mantissa value to 
produce the final value. The 
following formulae can be 
used to convert a number N 
stored in the mantissa bytes 
(see paragraph on mantissa for 
calculation of N) into the full 
floating point number by 
multiplying it with a positive 
exponent: 

Value = N • 2 (E-129) 

To determine the exponent 
of a number, find the highest 
power of two which can be 
subtracted from the number. 
Thus, if the number is 18.256 
then the highest power of two 
is 16 or 2 f4. The exponent value 
is positive, and therefore 
equals 129+4 or 133. The fact 
that the exponent is derived in 
this way means that the 
mantissa for two different 
values may be the same, with 
the difference being registered 
solely by the contents of the 
exponent. Thus, the floating 
point mantissa contents for the 
values 3.14159 (pi) and 6.28318 
(pi*2) are identical: 



3.14159 stored as — exponent 

130 and mantissa 73,15,218,161 
6.28318 stored as — exponent 

131 and mantissa 73,15,218,161 
As you can see, multiplying 

and dividing a floating point 
number by two is a very simple 
operation involving adding or 
subtracting one from the 
exponent. The range of the 
exponent is ± 2tl28. This 
equates approximately to ± 
10 38. 



Sign — The sign of the value is 
stored in unpacked — format 
as a single byte with a value of 
$FF for negative numbers for 
$00 for positive numbers. In 
packed format the sign is 
stored in bit seven of the 
highest byte of the mantissa. If 
bit seven is zero then the 
mantissa is positive, and if it is 
one then the mantissa is 
negative. Thus the unpacked 
floating point values for +2 and 



-2 are: 

number +2 is — exponent 130 
and mantissa 0,0,0,0 
number -2 is — exponent 130 
and mantissa 128,0,0,0 

Mantissa — The mantissa is 
stored in four bytes less the 
most significant bit of the most 
significant byte of the mantissa 
which is used to store the sign 
bit. To convert a number stored 
in the mantissa into its numeric 



033C 
033C 
033C 
033C 
933C 
033C 
033C 
C000 

CO0O 

C002 
C0O4 
CO09 
C0OE 
C013 
C015 
C018 
C01R 
C01C 
C01F 
C020 
C022 
C024 
C027 
C029 
C02B 
C02D 
C02F 
C032 
C035 
C038 
C03A 
C03D 
C03F 
C042 
C044 
C047 
C049 
C04B 
C04E 
C04F 
C851 



I CALCULATE <A+22>AB*5> 

i WHERE A AND B PRE INPUT FROM 

! THE KEYBOARD. ■» 

! ENTRV AT SVS 49171. 



i RESULT IS PRINTED 



C053 
C056 
C058 
C05A 
C05C 
COSE 
C061 
C064 
C067 
C069 



0000 

0000 
000000 
000000 
000000 

A000 
20CFFF 
C90D 
F0O6 
990002 
C8 
B0F3 
A900 
990002 
R9O0 
857ft 
0902 
857B 
2O7900 
208AAD 
20F7B7 
A514 
8D0OC0 
A515 
3DO1C0 
AO00 
20CFFF 
C90D 
FG06 
990002 
C3 
D0F3 
A900 
990002 
A90O 
857A 
A902 
857B 
207900 
203AAD 



*»$CO0O 
AV 
BV 
TF1 
TF2 
TF3 
ENTRV 
LI 



L2 



ENTRV 1 
L3 



L4 



20F7B7 
A514 

8D02C0 



WOR 0 
W0R 0 

BVT 0.0/0*0/0 
BVT 0.0*0*0*0 
BVT 0,0*0*0*0 
LDV #$00 
JSR $FFCF 
CMP #$0D 
BEQ L2 
ST A $0200* V 

INV 
BNE LI 
LBA #$00 

STA $0200* V 

LDA #$00 

STA $7A 

LDA #$02 

STA $7B 

JSR $-0079 

JSR $AD8A 

JSR $B7F7 

LDA $14 

STA AV 

LDA $15 

STA AV+1 

LDV #$00 

JSR $FFCF 

CMP #$0D 

BEQ L4 

STA $0200, V 

INV 

BNE L3 
LDA #$O0 
STA $0200* V 
LDA #$00 
STA $7A 
LDA #$02 
STA $7B 
JSR $0079 
JSR $AD8A 
JSR $B7F7 
LDA $14 
STA BV 



! INPUT BVTE 
'CARRIAGE RETURN? 
IVES 

! STORE BVTE 
!D0 NEXT 
I ALWAYS 

IZER0 TERMINATOR 

'SET CHARGET TO 
! BUFFER 



! CONVERT TO » 0-65535 
! MAKE INTEGER 
! STORE VALUE 
!IN TEMP 



! INPUT BVTE 
(CARRIAGE RETURN? 
! VES 

! STORE BVTE 
!D0 NEXT 
! ALWAYS 

"ZERO TERMINATOR 

!SET CHARGET TO 
! BUFFER 



• CONVERT TO # 0-65535 
! MAKE INTEGER 
! STORE VALUE 
!IN TEMP 

Program 3 



Programming 



equivalent use the following 
formulae: 

N = 1+(M1 AND 127)+(M2+(M3 
+M4/256)/256)/256)/128 

where M1.M2.M3 and M4 are 
the mantissa bytes, with Ml the 
highest and M4 the lowest. 
When N has been obtained it 
should be multiplied by 
2 (exponent — 129) to give the 
actual value. The program in 
Program 1 allows the input of a 
number, then prints the 
contents of the exponent and 
mantissa bytes for that number 
as it is stored in floating point. 
These values are then used by 
lines 90 to 120 to convert the 
floating point byte values back 
into the number. 

To convert a number into 
floating point form is a slightly 
harder calculation and involves 
the following steps: 
First find the highest power of 
two which can be subtracted 
from the number. E = the value 
of two to this highest power. 
Secondly let R = the remainder 
after subtracting the value of 
2 E. 

The calculation is then as 
follows: 

TO = (R/E)*128 

M1 = INT(TO)+mantissa sign 
(sign =0 if positive 128 if 
negative) 

T1 = (TO-INT(TO))*256 

M2 = INT(Tl) 

T2 = (T1-INT(T1))*256 

M3 = INT(T2) 

T3 = (T2-INT(T2))*256 

M4= INT(T3) 

Where M1,M2,M3,M4 are the 
four mantissa byte values, M1 
being the highest. The program 
in Program 2 does this 
conversion of a number input 
at the beginning of the 
program into the five bytes of a 
floating point format which are 
displayed on the screen. The 
program then checks by 
putting these values into the 
first variable in memory 
defined as a simple variable A 
in line 10. 

The following are examples of 
the storage of some floating 
point numbers; 





riJi 


1 TIA 


f 1 S 
♦ i %j 








•j i n 


BV+1 

t* V T k 




CP71 


AD0 1 C0 


LDA 


flV+i 


•GET FIRST VALUE 


C874 

f T 


AC00C0 


LDV 


flV 




C077 


2091 B3 


JSR 


fB391 


! FLOAT IT 


CG7A 


0204 


LDX 


#<TF1 


.'STORE IN TEMP FfiCl 


C97C 


A0C0 


LDV 


*>TF1 




CG7E 


20D4BB 


JSR 


JBBD4 




C081 


A90G 


LDA 


#tO0 


! VALUE 22 <fl6) 


C683 


AG16 


LDV 


#*16 




C085 


209 1B3 


JSR 


*B391 


! FLOAT IT 


C088 


A904 


LDfl 


«<TFi 


IPO I NT TO TEMP 


CG8A 


AGCG 


LDV 


#>TFi 


IFAC1 


CG8C 


2067B8 


JSR 


fB367 


IADD 


C08F 


A2G4 


LDX 


KTF1 


.'STORE IN TEMP FAC1 


C091 


AGCG 


LDV 


#>TF1 






2GB4BB 

«W \m w AJ T AS Am 9 


JSR 


*BBD4 

w aj Am* mJ 




C096 


AD03CG 


LDfl 

* AJ 1 I 


BV+i 


'get ^FrnNn vai iif 


CG Q 9 


RC02C0 


LDV 


BV 




CC9C 


209 1B3 


JSR 


f B391 


! FLOAT IT 


C09F 


A2G9 


LDX 


*KTF2 


'STORE IN TEMP FAC2 


CPtfW 


AGC0 


LDV 


W>TFP 






20D4BB 


JSR 


*BBD4 






n-vu 


I DR 




1 HFT VAI 1 IP S 
: vt 1 V nLl'l- -J 




finds 


1 T1V 






o L' r i r i 




T C .P 


» CO." X 


1 CI ftOT t T 






[ DA 


pJ<*TFP 




CORF 


AGCG 


LDV 


#>TF2 


•FAC2 


GOBI 

WW A 


2G28BA 


JSR 


fBfl28 


I MULT I PI V 


C0B4 


A9G4 


LDfl 


#<TF1 


•POINT TO TEMP 


C0E6 


A0C0 


LDV 


B>TF1 


IFAC1 


C0B8 


2G0FBB 


JSR 


fBBGF 


.'DIVIDE 


COBB 


A20E 


LDX 


«<TF3 


! STORE RESULT IN 


C0BD 


flGCO 


LDV 


#>TF3 


! TEMP FAC3 


C0BF 


2GD4BB 


JSR 


JBBD4 




C0C2 


2GDDBB 


JSR 


$BDDD 


! CONVERT TO STRING 


C0C5 


201 Eft B 


JSR 


fflBlE 


•PRINT STRING 


C0C8 


4C74A4 


JMP 


ffl474 


» 'READV. ' 



Table 1 



Using the Arithmetic 
Routines in a Machine 
Code Program 

Using the arithmetic routines 
within the Basic interpreter can 
save the programmer a lot of 
time in program development. 
It can also considerably reduce 
the size of a machine code 
program. The only penalty is 
that in the program using eight 
or 16 bit values the interpreter 
routines will have a consider- 
ably slower run time than 
specially written routines. 
When faced with the necessity 
of having to use arithmetic 



Number 


Exponent 


M1 


M2 


M3 


M4 


Sign 


1 


$81 


$80 


$00 


$00 


$00 


$00 


-7 


$81 


$80 


$00 


$00 


$00 


$FF 


.5 


$80 


$80 


$00 


$00 


$00 


$00 


.25 


$7F 


$80 


$00 


$00 


$00 


$00 


1E38 


$Fr 


$96 


$76 


$99 


$52 


$00 


1E-39 


$00 


$A0 


$00 


$00 


$00 


$00 



routines the best procedure is 
to always use the interpreter 
routines and only replace these 
if the program is running too 
slow. A list of the main 
arithmetic routines within the 
C64 is shown in Table 1. 

It is quite simple to utilise 
the interpreter arithmetic 
routines within a machine code 
program. The essential thing to 
remember is that the 
interpreter does all its 
calculations on floating point 
numbers, therefore all integer 
values must first be converted 
to floating point. The following 
is an example of a routine using 
the interpreter arithmetic 
routines: 

calculation C = (A+22) / (B*5) 

Where values A and B are both 
positive unsigned 16 bit integer 
values these are both input 
from the keyboard at the start 
of the beginning of the routine 



and the result C is a five byte 
floating point value which is 
both stored in memory and 
displayed on the screen. 
Variable storage locations in 
memory used by this routine 
are: 

$C000 — Isb of value A 
$C001 — msb of value A 
$C002 — Isb of value B . 
$C003 — msb of value B 
$C004 to $C008 — temporary 
floating point value storage 1 
$C009 to $C00D — temporary 
floating point value storage 2 
$C00E to $C012 — floating 
point result C storage 

This article is extracted from 
the following books and 
readers are recommended to 
consult them for further 
information — Advanced 
Commodore 64 Basic Revealed 
and Commodore 64 ROMs 
Revealed both by Nick 
Hampshire and published by 
Collins. 





[PROGRAM : COLOUR / K . FROST 



This month K Frost 



provides a couple of 



very handy routines 



for use on all 



machines. 



HOW OFTEN HAVE YOU 
wanted lo pul a scrolling 
message acctoss your screen? 
You know the type, they are 
used in most games programs 
to give instructions or a witty 
message. The first routine does 
just this. It is written in Basic but 
nevertheless is quite fast and 
would be very easy to include 
in your own programs as a sub- 
routine. 

All the routine requires is 
that the message to be scrolled 
is held in the string A$ and the 
positioning of the string is held 
in D$, i.e. D$ should hold a 
home and a number of cursor 
movements. 

The 18 in the MIDS state- 
ment is the width of the 
message window. This can be 
any size but don't forget if you 
go over 40 the message will 
scroll over more than one line 
on the screen. 

All Things Bright 

The second routine is one that 
will display a message and flash 
the letters of that message in 
different colours. This is very 
good for messages such as 
PRESS ANY KEY TO CON- 
TINUE' or 'SPACE TO PLAY'. 

Again the program is in 
Basic and you can easily add it 
as a subroutine to your own 
programs. The message that 
you wish to colour should be 
held in the string AS. $ holds all 
the colours through which you 
wish the letters to cycle. Do 
experiment with this as some 
very interesting effects can be 
achieved. 



100 PRINV'CCLEAR:":REn COLOURS 
LAY 

130 : BS- - cSh I TE , RED , CYAN . HAGENT* , 
GREEN . BLUE , YELLOW , CB , C3 . C4 , C5 , 

i40 C rcnV™iN f 5 UT p ^ T *, CH0rlE . 

"ajStSo";""" POSITION 
THE STRING 

,c n p-QR B-l TO LENCAS) 

. C -INTCLENCM3*RNDC1)3*1 
ipRINT tllDSCBS.C.nniDSCAS.B. 

inlbR X-0 TO 15: NEXT X.B.A 



R°LUNG%;™i*AnPLE o F 

130 R£n C nT^ UR COh "°°°*z 

16 0 f?Fh * 0n£: .DOU/rVq prr. 



•b-b-s-boUmd Tq be h tin 



"10 levels of fun make this torture excellent value 
for money. Nova rating. Definitely one of those 
Just another go' games. Game of the month 
February" - Computer Gamer 

"The most compulsive game I've ever 
played. If you don't buy it you'll never 
know what you've missed." says Gary 
Penn, Zzap! 64. Gold Medal Award. 
97% overall. 



£9.95 



cassette disc 

Free with Bounder Metabolis. 
Is it a man, is it a bird? 
(Commodore 64/128 version only) 




January 



Eric Doyle shows you 



how to foil the 



program pinchers. 






AFTER SPENDING MANY A 
sleepless night and cloistered 
day creating and debugging 
your latest computer master- 
piece, it's disconcerting to 
know that any Tom, Dick or 
Harriette can rip it off in 
seconds flat. In the past many 
methods have been suggested 
to prevent LISTing but few are 
satisfactorily secure. 

The four most common 
methods prevent the list func- 
tion from operating properly 
but only one of these works 
after the program has been 
RUN. 

Firstly, thec^ is the simple 
expedient of using a shifted 'L' 
in a REM statement on the first 
line of your program: 

10 REM [S L] 

Trying to list to a printer 
causes it to hang up after the 
REM and the normal command 
LIST merely produces the 
following: 

10 REM 

SYNTAX ERROR? 
READY 

To undo this protection it Is 
merely a case of deleting line 10 
and then the program can be 
freely listed by anyone. Not 
very secure. 

The second method only 
protects one line of a listing 
and also uses the protection of 
the REM statement. The easiest 
way to see this in operation is to 
enter a line such as 

10 PRINT'HELLO" :REM" 

Press the return key to enter 
the line and then move the 
cursor to the space after the 
quotes. Press the shifted delete 
key (INST) four times and then 
press it again four times 
unshifted (DEL). This should 
give four reversed letter T 
symbols. Next type GOTO 30 
and press return. 

If you now LIST the one line 
program you should see 

10 PRINT"HaLO":GOTO 30 

As there is no line 30 an 
error message would be 






expected but when this 
program is RUN it executes 
normally with no error. All that 
has happened is that the REM 
part of the line has been 
masked by the delete symbols 
and the GOTO is still seen by 
the operating system as being 
within a REM statement. When 
the system tries to LIST to the 
screen the deletes are 
executed and this effectively 
pulls back the GOTO over the 
REM. On a printer the trick is 
revealed because each delete is 
shown in its original form as a 
reversed T. 

Instead of the intricate 
INST/DEL routine, just pressing 
RVS ON and the letter T gives 
the same effect but with less 
fiddling about. 

Adding more deletes pulls 
the GOTO further back along 
the line and experimentation 
will show that the command 
can be polled back over the 
line number and even on tothe 
previous line. 

This is useful because it can 
be used in conjunction with 
the first list protection method 
to disguise its presence. 

17 PRINT"HELLO" 
23 REM"|47 deletes]100 
PRINT""[S L] 

This apparently only lists a line 
100 on the screen and gives a 
SYNTAX ERROR? message. The 
false line 100 would succeed in 
putting most people off the 
scent and using line numbers 
which are not divisible by 10 
would make deletion of the 
coded lines difficult. On a 
printer the trick is revealed as 
the deletes are shown in their 
original form as reversed Ts. 

Instead of the PRINT 
statement in line 17 you could 
use a PEEK statement which 
looks for the shifted L in line 23. 



To find the location of this 
character insert the following 
line: 

171FPEEK(XXXX) O204 
THEN SYS 64738 

Now enter the following in 
direct mode (no program line 
number) 

FOR A=2049 to 5000:IF 
PEEK(A)<>204 THEN 
NEXT 



When the cursor reappears 
type PRINT A and re-enter line 
17 with the number obtained 
(2140) in place of (XXXX). 
Repeat this line somewhere 
deep in the rest of your listing 
and hide it using the next 
method of protection. 
Remember that whatever line 
number is used for the two 
lines at the beginning of the 
program, the position of the 
shifted L will not move. 

The third method takes 
advantage of the way a line of 
Basic is seen by the operating 
system. A line consists of two 
bytes which give the memory 
address of the start of the next 
line, two bytes giving the 
current line number and then 
the tokenised code for the 
Basic instructions followed by a 
null (zero) byte denoting the 
end of the line. When a line is 
listed the null byte is used to 
tell the system to start a new 
line, not the two byte pointer 
to the beginning of the next 
line. We can fool the system 
into jumping to the next line 
during a list by inserting a null 
byte where it least expects it 
causing the list to prematurely 
jump to the next line without 
listing the Basic code in the 
current line. 

After writing your program, 
decide which line you want to 
hide and place any five letters 



at the beginning of the line. 

lOSSSSSPRINT'HELLO" 

Next insert a STOP at the end of 
the previous line or insert a 
new line which consists solely 
of a STOP command: 

5 STOP 

10SSSSSPRINT"HELLO" 

RUN the program until theslop 
is reached and the familiar 
break message is displayed. At 
this point the system has stored 
the memory location of the 
next line just in case CONT is 
used, locations 61 ($3D) and 62 
($3E) contain these pointers so 
the start of the line is given by 
the formula PRINT PEEK 
(63)*256+PEEK(64). In the 
example the value would be 
2055. 

To avoid upsetting the line 
link and the line number add 
five to this value and poke the 
location given with zero 
(POKE2060.0). The dummy 
STOP command can then be 
deleted and a LIST will show 
only the line number of the 
hidden line whether listed to 
the screen or a printer. 

For the final method of list 
protection we need to know a 
little about the way in which 
the 64's memory is organised. 
Locations 768 ($300) to l 819 
($333) mainly consist of jump 
vectors for some of the main 
ROM routines like LOAD, 
SAVE, BREAK and, more im- 
portantly, LIST, A vector is a 
two byte number which gives 
the location of the start of the 
in-built machine code routine 
which performs the relevant 
task. For example, a memory 
map gives the LIST vectors as 
being in location 774 and 775 
(S306-S307). Change either of 
the values found in these 
locations and the LIST function 
will be disabled causing all 



c 



5 PRINHCLEAR,DONN]LOADING PLEASE KAIT'jiFOR A=0 TO 86 
:D=0 

10 FOR B=0 TO 7: READ C:D=D+C:PQKE 49152+AIB+B, C: PRINT" ; 
;NEIT 

15 READ C:IF COD THEN PRINT: PRINT'CDOMN] 

ERROR IN LINE"AI10+100:END 
20 NEXT: PRINT: PRINT" [DQNN1ALL OK':FOR A=0 TO 1000:NEH 
25 INPUT" [CLEAR, DQKN6JARE YOU SAVING TO TAPE OR DISK (T/D 

)»jSM 

30 IF SMO'T 1 AND SMO'D" THEN 25 

35 IF SD$="T" THEN GOSUB 60:PQKE 186,1 

40 IF SD«="D" THEN GOSUB 70:P0KE 1B6,B 

45 PRINT a [D0WN2 t SPC7 v RVS0N,SPC3PRESS <SPACE> WHEN READY 

CSPC, D0HN2] PRINT " ISPC61 " ; 
50 GET A$:IF A*OCHR$(32) THEN 50 
55 SYS 49802: END 

60 PRINT'CDOHNIENSURE TAPE IS CUED TO THE END OF THECSPC3] 

'STOP THIEF! ' BASIC PROGRAM. " 
65 RETURN 

70 PRINT" CDOMNJPLfiCE YOUR 'STOP THIEF!' DISK IN THECSPC4] 

DISK DRIVE." 
75 RETURN 

100 DATA 160,0,162,45,169.241,32,5,814 

110 DATA 193,192,40,208,247,185,0,194,1259 

120 DATA 170,185.216.193,32,5,193,192,1186 

130 DATA 80,20B,242,162,9B,169,242,32,1233 

140 DATA 5,193,192,120,208,247,32,14,1011 

150 DATA 193,169,1,166,251,160,255,32,1227 

160 DATA 186,255,169,16,162,138,160,194,1280 

170 DATA 32,189,255,169,0,32,213,255,1145 

180 DATA 32,14,193,169,193,133,254,160,1148 

190 DATA 48,166,252,224,8,208,6,169,1081 

200 DATA 0,133,253,240,4,169,80,133,1012 

210 DATA 253, 162,0,177,253, 41, 63,157,J106 

220 DATA 160,4,232,200,192,128,208,243,1367 

230 DATA 162,0,160,0,185,208,193,157,1065 

240 DATA 24,5,232,200,192,25,208,244,1130 

25) DATA 32,159,255,32,228,255,201,13,1175 

260 DATA 208,246,166,252,224,8,240,5,1349 

27) DATA 160,46,32,30,248,32,14,193,755 

280 DATA 169,3,141,39,3,169,81,141,746 

290 DATA 38,3,160, 0,185,96,194, 153,829 

300 DATA 81,3,200,192,42,208,245,234,1205 

310 DATA 234,234,234,169,100,160,0,153,1284 

320 DATA l50,5,200,192,2B,208,24a,160,1191 

330 DATA 0,185,239,193,153,190,5,200,1165 

340 DATA 192,11, 20B,245, 160,0, 185,80,1081 

350 DATA 194,41,63,73,128,153,201,5,858 

360 DATA 200,192,16,208,241,169,160,153,1339 

370 DATA 201,5,169,0,32,144,255,169,975 

380 DATA 1,166,252,160,1,32,186,255,1053 

390 DATA 169,58,162,80,160,194,32,189,1044 

400 DATA 255,169,22,133,43,169,3,133,927 

410 DATA 44,169,43,166,174,164,175,32,967 

420 DATA 216,255,76,226,252,153,0,4,1182 

430 DATA 138,153,112,7,200,96,169,0,875 ^ 

440 DATA 133,254,169,4,133,255,162,3,1113 * 



manner of things to occur if the 
command LIST is used. Insert- 
ing a line at the beginning of 
your program such as: 

10 POKE766,226:POKE769,252 

would resull in a system reset if 
LIST was attempted. Changing 
these values to 131 and 164 
respectively would apparently 
cause nothing to happen. 

One word of caution, I'm all 
in favour of experimentation 
but be warned: never play 
around with vectors if you have 
something valuable in the 
memory, you'll lose it! 

All these systems have a 
common fault: they are all 
easily circumvented once 
located. What is needed is a 
program which will run auto- 
matically and again we need to 
look at the vectors in the light 
of how the operating system 
leaves the LOAD command. 

A call is made to the vector 
jump at location 770 ($302) 
which causes a warm reset of 
the system. If this vector is 
changed to cause the newly 
loaded program to run we will 
have achieved our aim. But 
how can this be done? 

First we must check that the 
memory locations which 
define the start and end of the 
program are correctly primed 
and (hat the text pointer is set 
to the beginning of the 
program. Fortunately, this can 
be done by calling up a routine 
in the Basic ROM located at 
42585 ($A659) and then a call to 
42946 (SA7AE) will cause the 
execution of the program. This 
means that we have to place a 
short routine into the memory 
and point the warm start 
vectors to the start of the 
routine. 

Finding a place to store the 
autorun routine can be fraught 
with problems because it must 
stay in memory to keep (he 
program re-running. 

The cassette buffer must be 
avoided in case the program 
needs to access the recorder 
for any reason. Just below (his 
buffer are eight consecutive 
bytes of free memory which 
will house our six byte routine 
comfortably: 

0334 JSR $A659 
0337 IMP $A7AE 

Two bytes of the warm start 
vector can now point to this 
routine and because the warm 
start is called up by the 



RUN/STOP-RESTORE routines 
the use of the RUN/STOP key 
will result in the program re- 
starting from the beginning. 

To ensure that the autorun 
will work, a wedge, called from 
the CHROUT vectors at 
806($326), must be placed into 
the cassette buffer to alter the 
vector at 770($302) at the end of 
loading. When the system tries 
to print READY, it jumps into 
the wedge which changes the 
warm start vectors. All of the 
memory from 316 (o the end of 
your Basic program is saved 
after the CHROUT vectors 
have been changed. 

Obviously, you cannot 
change the vector without 
using a machine code SAVE 
routine. The one included here 
starts off with a Basic program 
which stores the details of the 
load and save devices and 
filenames. This jumps in(o a 
machine code routine which 
loads the program which you 
want to protect, devises a 
suitable loading screen and 
places the autorun details in 
memory. A save is then 
performed and a cold reset is 
performed allowing you to try 
your new autoloading program 
out. 

The Basic loader program 
includes a save routine. To set 
up your Stop Thief! master 
enter and save the loader 
program on a spare tape or 
disk. Type in and save the Stop 
Thief! Master program and 
then load and run the Basic 
loader (so that it stores the 
program immediately after (he 
Master program if you are 
using tape). 

When using Slop Thief!, 
toad the Master program and 
run it. This automatically loads 
the machine code program. 
Although you will receive a 
prompt, make sure that the 
tape/disk containing the 
program ready for conversion 
is in the recorder/drive. 

After loading, suitable 
prompts will appear to enable 
you to successfully save your 
autorun program and disk 
users should not be too 
concerned about (he fac( tha( 
(he saving screen proclaims 
that it is loading the program. 
Remember that this screen will 
be saved along with your 
program and therefore will 
become your loading screen. 

The results of your labours 
will be unbreakable Basic 
programs. . .well almost! 



580 

* Of; 

600 
610 



450 DATA 160,120,169,32,145,254,200,208,1288 
460 DATA 249,230,255,202,208,246,145,254,1789 
470 DATA 200,192,112,208,249,96,0,0,1057 
480 DATA 69,78,83, B5, 82.69,32, B4.5B: 
490 DATA 72,65.84,32,84,72,69.32,510 
500 DATA 68,73,83,75,32.73,78.32,514 
510 DATA 89,79,85.82.32,68,73,83,591 
520 DATA 75,32,68.82,73.86,69,32.517 
530 DATA 73,83,32,82,69,65,68,89,561 
540 DATA 32. 84,79,32. 84,65.75. 6?, 520 
550 DATA 32, 84, 72, 69, 32, B0.82, 79,530 
560 DATA 84.69.67,94,69,68,32.80,553 
570 DATA 82,79.71.82,65,77,32.32.520 
DATA 69.78.33. 85. 82,69, 32, 84. 582 
DATA 72,65,84,32,84.72.69.32,510 
DATA 84.65,80,69,32.73.78,32,5!! 
DATA 89.79,85, 82. 32, 82.69.S7. 585 
620 DATA 79, 82. 68, 69, B2. 32.73.83, 568 
630 DATA 82,69.65,68,89.32,84,79,568 
640 DATA 32.84.65,75,69,32,84.72,513 
650 DATA 69,32,80.82,79,84.69,67.562 
660 DATA 84,69,68,32.80,82,79,71,565 
670 DATA 82,65.77,32,32.32,32,32,384 
680 DATA 16.18,5.19.19,32,60.18.187 
690 DATA 5, 20, 21, IB, 14, 62.32. 23,195 
700 DATA 3,5.14,32.18,5.1,4.87 
710 DATA 25,32.89,166,76,174.167,160.889 
720 DATA 140.143, 129,132,137.142.135,160,1118 
730 DATA 160.160.160.0,0.0,0,0,480 
740 DATA 160, 170, 160, 170, 160. 170, 160, 170, 1320 
750 DATA 160.160,147,160,148,160,143,160.1238 
760 DATA 14*. 160, 160, 148, 160, 136, 160, 137, 1205 
770 DATA 160.133,160,134.160.161,160,160,1228 
780 DATA 170,160.170.160.170.160,170.160,1320 
790 DATA 0,32,32,1,19,16,32.12,144 
800 DATA 20.4,32,47,32,25,15,21.196 
810 DA T A IB. 32.3, 15,13, 13, 15,4, 113 
820 DATA 15.18,5,32,47,32,5,18,172 
830 DATA 9,3.32,4,15,25,12,5,105 
840 DATA 0.0,0,0,0,0,0,0,0 
a50 DATA 0,0,0,0,0,0,0,0,0 
860 DATA 169,202,141,38,3,169.241,141,1104 
870 DATA 39.3.160,6,185,116,3,153,665 
8B0 DATA 51.3,136,208,247,169,0,133,947 
890 DATA 198,169,52,141,2,3,169,3,737 
900 DATA 141.3.3,96.32,89,166.76,606 
910 DATA 174,167,169.1,166,186,160,1,1024 
920 DATA 32,1B6,255.169,10,162,174,160,1148 
930 DATA 194,32,189,255,169,0,133,253,1225 
940 DATA 169.192,133,254,169,253,162,138,1470 
950 DATA 160,194.32,216,255,96,84,72,1109 
960 DATA 73,69,70,32,67,79,68,69,527 



io rem tttttsisutttmitmsutt 

20 REH USPC23S T 0 PCSPC23T H I E F !tSPC23t 

30 REM USPC24JI 

40 REM MSPClUBYtSPClllt 

50 REH ICSPC71ERIC D0YLECSPC71I 



60 REH USPC243I 

70 REH t YOUR CQMHODORE C SPC23 FEB 85 I 

bo reh imtmmumttmtmi 

90 GOTO 180 

100 PRINT'[CLEAR,RVS0N,6REEN,CE,C7,CE2,C3,CE2,CB,CE2,C6, 
CE2 ) YELL0«,CE22,C6,CE2,C8 ( CE2,C3,CE2,C7,CE2,6REEN ) CE]-: 

110 PR I NT" CC7 , SPCH CC3 , SPC ] I CC8 , 5PC 3 1 C C6 f SPC1 • C YELLOW , 
SPC23S T 0 PESPC23T H I E F !CSPC2,C6]l[SPC,C8]t[SPC, 

C33tlSPC,C73t B i 
120 PRINT" [6REEN,CR,C7,CR2,C3,CR2,C8,CR2,C6,CR2, YELLOW, 

CR22,C6,CR2,C8,CR2,C3,CR2,C7,CR2, GREEN, CR3' 
130 PRINT" CDDMN1B3 " ; 

140 PRINT-E6REEN3-CC73— CC33—CCB3— CC63— CYELLQM3 
[C63--tC83"[C3!--tC7]~C6REEN] 

150 PRINT'[C7]e[SPC,C3,SPC]A[C83SPCC6,SPC]LCYELL0H]TD / 

YOUR COHHQDORE / EREC63 ICCC8 P SPC3DCC33QYEC73LE* ; 
160 PRINT' [GREEN, CI. C7,CI2,C3,CI2,CS,CI2,C6,CI2, YELLOW, 

C 122, C6,CI2,C8,CI2,C3,CI2,C7,CI2, YELLOW]'; 
170 POKE 2023,98:PQKE 56295, 5: RETURN 
180 A=A+1:P0KE 532B0,9:POKE 53281,9 
190 PN$=":PPI=":PADI='tSPC163":SOSUB 100:0=PEEK(186) 
200 IF A<2 THEN PRINT' [HOME, DQWN73LQADIN6 CODE. [DOWN, SPC3 

PLEASE WAIT...':LCAD'THIEF C0DE',D,1 
210 INPUT'tHOHE,DONN53LQAD ORIGINAL FROM TAPE OR DISK 

[SPC10,LEFT103';TD$ 
220 TD$=LEFT$(TD*,1):IF TDIO'T" AND TDIO'D" THEN 210 
230 POKE 25l,l:LDI='TAPE':IF TD$="D" THEN f>OKE 251,8 

:LD*="DISK" 

240 INPUT'[HOHE.DOWN73SAVE COPY TO TAPE OR DISK[SPC10, 
LEFT 103" ; TD* 

250 TD$=LEFT$tTD$.l>:IF TDIO'T" AND TDIO'D' THEN 240 
260 POKE 252,1:SD$='TAPE":IF TD$="D' THEN POKE 252,8 
:SD$="DISK" 

270 INPUT'EH0HE,D0WN930RIGINAL NAHE";PN$: IF PN*=" "THEN 270 
280 IF LEN(PN$)<17 THEN POKE 49203,LEN(PN$1 
290 PN$=PN«+PAD$:PN*=LEFT$(PN$,16) 
300 INPUT'[H0HE,DDWN113C0PY NAHE';PP* 

:IF PP$='t" THEN PP$=PN$ 
310 IF PP$=" THEN 300 

320 IF LENIPPIX17 AND SD$<>"TAPE' THEN POKE 49385, 
LEN(PPI) 

330 PP$=PP*+PADi:PPS=L£FT$(PP*,i6) 
340 SOSUB 100 

350 PRINT"CHOHE,DOWN5,YELLOH3'PN*'[GREEN,SPC: 

WILL BE LOADED FROM" 
360 PRINT" [DOWN, YELL0W3" ;LD$" [GREEN, SPC3 AND SAVED IN ITS 

PROTECTED FORH ON' 
370 PRINT'[DOWN,YELLOWJ"SD$'[6REEN,SPC3UNDER THE NAHECSPC, 

YELLOW] "PP$ 
380 PRINT"CD0WN3IS THIS CORRECT?" 
390 GET A$: IF AIO'Y" AND AIO'N' THEN 390 
400 IF A$='N" THEN 180 

410 FOR A=l TO 16:P0KE 49B01*A.ASC(HIDKPN$,A,!>> 

:POKE 49743+A,ASC(MlD$(PPI,A,i)) 
420 NEXT 

430 GOSUB 100:PRINT'CHOHE.DOWN83INSERT "LD»" CONTAINING 
"PN* 

440 PRINT'PRESS -RETURN) WHEN READY" 

450 SET A*: IF A$OCHR$tl3) THEN 450 _ 

460 SYS 49152 " 



14 



i 



A Flash Of 

Genius! 



0 




946240 CWEASY G 19002985 PRESTEL MAILBOX 919992265 




Make magic with this month's) 
from Global Software. 



THERE'S MAGIC IN THE AIR AND 
mischief too in Magician's Ball from 
Global Software. If you want to improve 
your spelling then study the illustration 
on this page and see if you can be one 
of the lucky readers to enter an enchanted 
adventuring world. If you want to find 
out more about the game then turn to 
Sense of Adventure for details. There are 
20 copies of the game to be won and the 
top five entrants will also receive a copy 
of Global'* Caretaker program. 



Mow to tnter 



STUDY THE ILLUSTRATION 
page. Look very carefully as 



ON THIS 
there are 

several enchanted balls hidden in the 
picture. When you think you have found 
all the hidden ball*, circle them clearly. 

Fill in the entry coupon carefully and 
seal it in an envelope, writing the num 
of balls you found on the back. 

Send your entry to: Global Software 
Competition, Your Commodore, No 1 
Golden Sq, London W1R 3AB. The closing 
date is Eriday 28 February 1986. 

You may enter as many times as you 
wish but each entry must be on an official 
coupon and sealed in a separate 
envelope. 

Important: Please follow closely the 
guidelines on entering - incomplete 
coupons and entries with no numbers on 
the back cannot be considered. 

The Rules 

ENTRIES WILL NOT BE ACCEPTED 

from employees of Argus Specialist 

Publications, Alabaster Passmore and 

Sons and Global Software. The restriction 

also applies to employees' families and 

agents of the company. 

The How to Enter section forms part of 

the rules. The editor's decision is final and 
no correspondence will be entered into. 




Global Software Competition Entry 
Coupon 



Name . . 
Address 





J post code 

I Number of Magician's ball* found: • ■ • ■ ; • v " ' V.* " " 

Send to* Global Software Competition, Your Commodore, No 1 Golden 
| Sq, London W1R 3AB. Write clearly and don't forget to write your answer on 
I the back of your envelope. 



THE COUNTDOWN HAS BEGUN 




n.R.P.£&9S 



DURELL sales dept., 

I Castle Lodge, Castle Green/Taunton TA1 4AB 



Steve Carrie adds a 
machine disassembler 
to the Mach 1 
monitor. 




IN THIS ARTICLE, I WILL GIVE 
listings of the MACH 1 monitor 
extension and also some infor- 
mation on the whole MACH 
series of programs. 

The extension adds a dis- 
assembler to the normal 
monitor commands. When the 
Basic program is RUN for the 
first lime, it will patch the dis- 
assembler into the normal 
monitor code. Note that it 
replaces the 1 command (warm 
restart), so you will not be able 
to use the warm start facility (a 
similar effect can be created by 
issuing a G 8200 command). 

When you have typed in 
and saved the extension listing, 
place a disk containing the 
original monitor program in 
the drive then RUN the 
program. 

First, the extension code is 
placed in memory at address 
7D00 hex. Each line has a 
checksum. If a data error 
occurs, the program will print 
the number of the line where it 
was detected. This checksum 
isn't 100% effective since one 
error may cancel out another 
so be careful! 

Next, the original monitor 
code is loaded in at its usual 
address of 8200 hex. A series of 
POKEs patch the extension into 
the main code. These changes 
are as follows: 

1 Change the I command to D 
and reset execution vector. 

2 A section of code in the 
original monitor which sets the 
top of memory is altered to set 
at address 7D00 hex 



3 Alter start-upmessage vector. 

Finally, the whole program 
is saved to disk under the name 
of NEWMON. When you are 
sure that everything works OK. 
you can replace the original 
MONITOR file with this new 
version. 

When the SAVE is com- 
plete, type SYS 64738 to reset 
the machine (don't switch ihe 
machine off!) then enter the 
monitor " with SYS 33280 
(unchanged). In addition to the 
usual start-up message, you 
should see another one similar 
to: 

MACH1 EXTENSION 
VERSION 3.5 

(C) OCTOBER 1985 5.D.C)Y.C. 

Now, if you type D A560 
< return>the disassembler 
should p'rint out the contents 
of one of the ROM routines. 
Note that this command auto- 
matically sets hex I/O mode. 

You should note that there 
is now about IK less source 
code space for the editor which 
still leaves about 30K. 



given below. 



Name 


Address 


START 


8200 


SAVE 


8203 


LOAD 


8206 


FNAME 


8209 


OUTADD 


820C 


OUT BYT 


820F 


RET 


8212 


EVAL 


8215 


CHKHEX 


8218 


CHKNUM 


821B 


CHKANU 


821E 


NSFT 


8221 


COPEN 


8224 


Function 




WARM START 




SAVE TO DISK 




LOAD FROM DISK 


PARSE FILENAME 


OUTPUT A 2-BYTE NUMBER 


OUTPUT A 1-BYTf NUMBER 


1 OUTPUT A CR 


IF 


EVALUATE EXPRESSION 


CHICK ACC FOR HEX CHAR 


CHACK ACC FOR NUMBER 


CHECK ACC FOR AlPHA-N 


SETS FILENAME PARAMETERS 


OPEN DISK ERROR CHANNEL 



The Monitor Jump 
Table 

When I wrote the MACH 
series, I decided lo put some of 
the more commonly used 
routines into the monitor. A 
jump table was provided at 
address 8200 hex to access 
these roulines. Since the 
monitor is always present, a 
program only had to know 
where to call the required 
jump. A fair chunk of memory 
was saved using this method. In 
fact, looking back on it now, a 
lot more could have been 
saved. 

The names of the routines 
and their call addresses are 




SAVE — Save memory to disk. 
At entry. TXTPTR must point to 
an ASCII string in TIB which has 
the format: 

filename addressl > ad- 
dress2 > 

This is the same format as the 
monitor S command. Any 
errors cause a jump to the 
error handler. On exit. 
1 XTPTR points to the end of the 
string+1. This routine uses a 
logical file number of 1. Note 
that the Basic ROM is switched 
out to allow thearea A000-BFFF 
hex to be saved too. 
LOAD — Load from disk. On 
entry, TXTPTR points to an 
ASCII string in TIB with format: 



filename> 



address should be used since 
each routine ends with RTS 
(except START). 

Some are more useful than 
others. A more detailed 
description follows. Note that 
TXTPTR is the CHRGET text 
pointer at address 7A hex and 
TIB is the terminal input buffer 
at address 0200 hex. 
START — This simply vectors lo 
the code for restarting ihe 
monitor. It is a non-returning 
routine which destroys the 
6502 system stack. This is 
normally used by an external 
command to return control to 
the monitor (see EXTERNAL 
COMMANDS). This is also the 
address 33280 used by the Basic 
start-up call. 



This is the same as the monitor 
L command. Any error causes a 
jump lo the error handler 
routine. On exit. TXTPTR ■ end 
of string+1. Uses logical file 1. 
FNAME — Parse filename. On 
entry, TXTPTR points to an 
ASCII string in TIB which re- 
present the filename. At exit, 
registers are as follows: 

X - length of filename string 
Y - start offset of siring in TIB 
TXTPTR - end of string +f 

This routine uses spaces as 
delimiters. An error is given if 
string exceeds 50 characters. 
OUTADD — Oulput a 2-byte 
ASCII hex or decimal string. On 
entry, Y,X contain the 16-bit 
value to be printed. Theoutpu! 
mode (hex or decimal) 
depends on the flag OUTMOD 
(address 02AE hex). If 
OUTMOD is zero, output 
mode is decimal otherwise it is 
hex. 

OUTBYT — Similar lo 
OUTADD except an 8-bit value 



in the accumulator is used. 
RET — Simply outputs a cr/lf 
combination to the current 
output device. 

EVAL — Evaluation expression. 
On entry TXTPTR points to the 
start of the string. The flag 
OUTMOD operates in the 
usual way. Errors will be 
incurred if either the number is 
out of range (0<n>65535) or 
illegal characters are found. 

Note that this routine also 
checks for the apostrophe (') 
which puts EVAL into ASCII 
mode regardless of OUTMOD. 
On exit. TXTPTR points to the 
end of the string +1. 
CHKHEX, CHKNUM, CHKANU 
— These three routines check 
the accumulator for an ASCII 
hex, numeric oralpha-numeric 
character respectively. At exit, 
a carry-flag set indicates a valid 
character. 

NSET — Set filename 
parameters. On entry TXTPTR 
points to the start of a filename 
in TIB. On exit, KERNAL 
routine SETNAM {FFBD h« 



called and TXTPTR ■ end of 
filename +1. 

COPE — Opens disk device 8 
error channel 15. No input 
parameters. There is no 
CCLOSE call. A file close may 
be accomplished using the 
following routine. 
LDA#15 ; COPEN USES LFN 15 
JSR $FFC3 ; KERNAL CLOSE 
ROUTINE 

Put simply, an external 
command is one whose code is 
not resident in the MACH1 
area. Externals normally 
occupy the area from 9000 to 
9FFF hex but may extend up to 
CFFF hex if the Basic ROM is 
switched out (if you use this 
method, remember to switch 
the ROM back in before calling 
START to return to the 
monitor). 

When the external has 
finished executing, a JMP 
START allows the monitor to 
regain control. The actual call 
address of an external is 9000 
hex. 



10 A*A*l:IF A=2 THEN 110 
20 S*32000:PRINT-INSTALLIN6 EXTENSION' 
30 FOR L*200 TO 980 STEP 10 
40 T=0 

50 FOR B=0 TO 15 

55 READ Z:P0KE S.Z:S=S+1:T=T+Z 

60 NEXT 

70 READ TT: IF TTOT THEN PRINT-DATA ERROR IN LINE';L:END 
90 NEIT 

90 PRINT-LOADING MONITOR. ■ 

100 LOAD-flONITOR-,8,1 

110 POKE 33340,68 

120 POKE 33450,0:P0KE 33451,125 

130 POKE 35269,125 

140 POKE 35284,76:P0KE 35285, 144: POKE 35286,129 
145 PRINT-SAVING NEWH0N" 

150 POKE 43,0:P0KE 44,125:P0KE 45,128:P0KE 46,142 

160 SAVE -NEHHON-,8,1 

170 POKE 43,1: POKE 44,8:CLR 

160 PRINT-FINISHED. ':END 

200 DATA 76,225,126,255,105,101,117,255,109,125,121,97,113, 
255,255,41, 2376 

210 DATA 37,53,255,45,61,57,33,49,255,10,255,6,22,255,14,30, 
1437 

220 DATA 255,255,255,255,255,255,36,255,255,44,255,255,255, 
255,255,255, 3650 

230 DATA 201,197,213,255,205,221,217,193,209,255,255,224, 

22B,255,255,236, 3619 
240 DATA 255,255,255,255,255,255,192,196,255,255,204,255, 

255,255,255,255, 3907 
250 DATA 255,255,198,214,255,206,222,255,255,255,255,255,73, 

69,85,255, 3362 
260 DATA 77,93,89,65,81,255,255,255,230,246,255,238,254,255, 



ASSEMBLER are externals. 
Often, if the external you want 
to use has already been called 
(i! must have been the last 
external called), a G 9000 
command will provide a 
quicker method of execution. 
This is because an external 
remains resident after 
execution i.e. it is not deleted 
from memory. This is true until 
another external is called or the 
F command is used to clear out 
this section of memory. 

The Macro Processor 
Bug 

And now. . . the bug! I 
discovered this while using the 
MACH system. It will only 
affect you if you use the micro 
processor on large source files 
containing macro calls. 
Basically, when the macro 
processor is constructing the 
output file, it uses the available 
memory from 0601 to 7CFF hex. 
Due to a programming 
oversight {a nice 



way of: 



to see if this file is overflowing 
into the area above 7DO0 hex. 
The processor will quite 
happily destroy itself! 

If the application you are 
working on needs no macros 
then you can leave out the 
macro processing altogether 
and submit the raw code to the 
assembler. 

Unfortunately, there is no 
easy way to tell when an 
overflow will occur. As a 
guideline, if your source code 
occupies more than about 25K 
and contains calls to some 
really big macros then you may 
run into trouble but I think 
about 90% of the time you will 
be OK. Sorry about that! 

I have tried to make the 
MACH system reasonably 
versatile by including the 
external command facility. If 
anyone has any comments, 
questions or ideas on the 
system, I would be glad to hear 
them. Write to Steve 
re. 



255,255, 3158 

270 DATA 255,255,255,255,255,255,76,255,255,255,255,108,255, 

255,255,255, 3754 
280 OATA 255,32,255,255,255,255,255,255,169,165,181,255,173, 

189,185,161, 3295 
290 DATA 177,255,255,162,166,255,182,174,255.190,255,255, 

255,255,160,164, 3415 
300 DATA 180,255,172,188,255,255,255,255,74,255,70,86,255, 

78,94,255, 2982 
310 DATA 255,255,255,255,9,5,21,255,13,29,25,1,17,255,42, 

255, 1947 

320 DATA 38,54,255,46,62,255,255,255,255,106,255,102,118, 

255,110,126, 2547 
330 DATA 255,255,255,255,255,233,229,245,255,237,253,249, 

225,241,255,255, 3952 
340 DATA 255,133,149,255,141,157,153,129,145,255,255,255, 

134,255,150,142, 2963 
350 DATA 255,255,255,255,255,255,255,132,148,255,140,255, 

255,255,255,255, 3735 
360 DATA 66,67,67,66, 67, 83,66, 69,B1, 66, 77,73,66, 78,69,66, 
1127 

370 DATA 80,76,66,86,67,66,86,83,67,76,67,67,76,68,67,76, 
1174 

380 DATA 73,67,76, 86,68, 69,88,68,69, 89, 73,78,BB,73, 78, 89, 
1232 

390 DATA 80, 72, 65, 80, 72, 80, 80, 76, 65, 80, 76, BO, 82, 84, 73, 82, 
1227 

400 DATA 84,83,83, 69,67, 83,69,68,B3,69,73,84,65,8B,B4,65, 
1217 

410 DATA 89,84,83, 88,84. 8B,65,84, 88,83,84, 89,65, 78, 79,80, 
1311 

420 DATA 66,82,75,65,68,67,65,78,68,65,83,76,66,73,84,67, ► 




430 DATA 77,80.67,90,88,67,80,89,68,69,67,69,79,82,73,78, 
1213 

440 DATA 67,74,77,80,74,83,82,76,68,65,76,68,88,76,68,89, 
1211 

450 DATA 76, B3,82 ( 79,82,65.82,79,76,82,79,B2, 83,66,67, 83, 
1246 

460 DATA 84, 65.B3, 84,88, 83,84,89,144,176,240,48, 208,16, 80, 
112, 1684 

470 DATA 24,216,88,184,202,136,232,200,72,8,104,40,64,96,56, 
248, 1970 

480 DATA 120.170,168,186,138,154,152,234,0,0,11,22,33,44,55, 
66, 1553 

490 DATA 77,88,99, 110,121, 132,143,154,165,176,187, 19B,209, 

220,231,242, 2552 
500 DATA 255,169,255,141,174,2,32,121,0,240,3,32,21,130,32, 

201, 1808 

510 DATA 128,32,18,130,32,228,255,240,251,201,13,208,241, 
108,2,3, 2090 



210, 1860 

720 DATA 255.169,2,96,169,41,32,210,255,32,62,127,169,89,32, 
210, 1950 

730 DATA 255,169,2,96,173,2,2,32,15,130,173,1,2,32,15,130, 
1229 

740 DATA 169,41,32,210,255,169,3,96,177,20,141,1,2,169,2, 

N133, 1620 
750 DATA 91,32,70,127,32,119,127,32,65,127,32,65,127,165,20, 
24, 1255 

760 DATA 105,2,133,253,165,21,105,0,133,254,173,1,2,48,14, 
24, 1433 

770 DATA 101,253.133,253,165,254,105,0,133,254,76,178,128, 
169,0,56, 2258 

780 DATA 237,1,2,133,3,165,253,56,229,3,133,253,165,254.233, 
0, 2120 

790 DATA 133,254,165,254,32,15,130,165,253,32,15,130,96,24, 
101,20, 1819 

800 DATA 133,20,165,21,105,0,133,21,96,169,0,133,2,133,90, 



520 DATA 165,90,201,1,144,7,201,5,176,10,76,28,127,169,1, 133, 1354 

aif\ data ai 



133. 1534 

530 DATA 91,76,70,127,201,8,144,18,201,10,240,14,169,2,133, 
91, 1595 

540 DATA 160,1,177,20,141,1,2,76,70,127,169,3,133,91,160,1, 
1332 

550 DATA 177,20,141,1,2,200,177,20,141,2,2,76,70,127,169,44. 
1369 

560 DATA 44,169,32,76,210,255,32,65,127,32,65,127,173,0,2, 
32, 1441 

570 DATA 15,130,166,91,224,1,240,19,173,1,2,32,15,130,166, 
91, 1496 

580 DATA 224,2,240,13,173,2,2,32,15,130,96,32,65,127,32,65, 
1250 

590 DATA 127,32,65,127,76,65,127,32,65,127,32,65,127,166,2, 
160, 1395 

600 DATA 0.138,24,10,101,2,170,189,0,126,32,210,255,232,200, 
192, 1881 

610 DATA 3.208,244,96,32,65.127,32,65,127,165,90,208,8,169, 
65, 1704 

620 DATA 32,210,255,169,1,96,201,5,176,60,201,1,208,19,169, 
35, 1838 

630 DATA 32,210,255,169,36,32,210,255,173,1,2,32,15,130,169, 
2, 1723 

640 DATA 96.169,36,32,210,255,173,1,2,32,15,130,165,90,201, 
2, 1609 

650 DATA 240,236,72,32,62,127,104,201,3,208,3,169,98,44,169, 
89, 1847 

660 DATA 32,210,255,169,2,96,201,8,176,46,72,169,36,32,210, 
255, 1969 

670 DATA 173,2,2,32,15,130,173,1,2,32,15,130,104,201,5,208, 
1225 

680 DATA 3,169,3,96,72,32,62,127,104,201,6,208,3,169,88,44, 
1397 

690 DATA 169,89,32,210,255,169,3,96,72,169,40,32,210,255, 
169,36, 2006 

700 DATA 32,210,255,104,201,10,240,44,72,173,1,2,32,15,130, 
104, 1625 



810 DATA 91,32,65,127,165,21,32,15,130,165,20,32,15,130,32, 
65, 1137 

820 DATA 127,160,0,177,20,141,0,2,201,255,240,45,162,0,221, 
168, 1919 

830 DATA 126,240,8,232,224,33,144,246,76,75,129,134,2,224,8, 
176, 2077 

840 DATA 9,200,32,104,128,169,2,76,189,128,169,1,133,91,32, 
70, 1533 

850 DATA 127,32,119,127,169,1,76,189,128,169,1,133,91,32,70, 
127, 1591 

860 DATA 32,65,127,32,65,127,169,66,32,210,255,169,89,32, 
210,255, 1935 

870 DATA 169,84,32,210,255,32,65,127,32,65,127,169,36,32, 
210,255, 1900 

880 DATA 173,0,2,32,15,130,169,1,76,189,128,162,0,221,3,125, 
1426 

890 DATA 240,8,232,224,253,208,246,76,25,129,138,133,90,162, 
33,221, 2418 

900 DATA 168,126,144,7,240,6,232,224,23,208,244,202,134,2, 
165,90, 2215 

910 DATA 56,253,168,126,133,90,32,0,127,32,119,127,32,148, 
127,76, 1646 

920 DATA 189,129,255,255,255,255,255,255,255,255,255,255, 

255,255,255,255, 3B87 
930 DATA 32,30,171,169,157,160,129,32,30,171,76,215,137,13, 

10,77, 1609 

940 DATA 65,67,72,49,32,68,73,83,65,83,83,69,77,66,76,69, 
1097 

950 DATA 82,32,69,88,84,69,79,63,73,79,78,13,10,86,69,82, 
1075 

960 DATA 83,73,79,78,32,51,46,53,32,69,88,84,13,10,40,67, 
898 

970 DATA 41,32,83,46,68,46,67,46,47,89,46,67,46,32,79,67, 
902 

980 DATA 84,79,66,69,82,32,49,57,56,53,13,10,0,0,255,126, 
1031 



20 




FOR JUST 



NORMAL RATE . . . £16.60 



A subscription to YOUR COMMODORE 
magazine is a gift twelve times over! 
Whether the subscription is for a friend, relative 
or a treat for yourself, YOUR COMMODORE 
provides the reader with the latest Information 
and developments on the Commodore range 

of computers. 

Delivered each month straight to the comfort of 
your own home, could a Commodore 
enthusiast wish for anything better? 



(This offer lasts until 28.2.86 and applies to readers In the United 

Kingdom only.) 



SUBSCRIPTION RATES 

Yearly overseas accelerated surface post: £21 .50 or U5.S28.00. 

Yearly overseas air mail: £57.00 




Please return the completed form to: 

Your Commodore Special Offer 
INFONET LTD 
Times House 
179 The Marlowes 
Hemel Hempstead 
Herts HP1 IBB 



COMMODORE 

Please register the special £13.00 YOUR COMMODORE sub- 
scription below: 




Name 

Address 



I would like to arrange a gift subscription to the person below: 
(Enter your own name and address above as donor.) 

Name _ - ~ 

Address — 



Please commence the subscription to YOUR COMMODORE with 

t wm *** * *• •*** p •** ■*»»•****•»• . + * ■ - • * iSS U 0- 



I enclose payment of £ 

(Cheques made payable to Argus Specialist Publications Ltd.) 

Please charge my credit card account the amount of £ 



Card no 



Valid from 



.to. 



Signature 

Name 

Address 




operation for the C16 and 



Plus/4 will cut down that 



tedious waiting time. By Nick 



Hampshire. 



A FA5T LOADER IS A ROUTINE WHICH 
replaces the existing LOAD and allows a 
program or data to be loaded from tape at 
about 10 times the speed of a normal 
LOAD so a tape can be as fast as a disk 
drive. 

A fast loader is achieved by simply 
changing the format of the pulse 
sequence stored on the tape to allow a far 
greater density of information storage per 
inch of tape. 

In order to create a fast load program 
two routines are needed. Firstly, a fast 
LOAD routine. This is a fairly short 
machine code routine loaded at the 
beginning of a LOAD operation and auto 
run to LOAD the rest of the program 
and/or data stored in fast loader format. 
The second program required is a routine 
to SAVE a program in fast loader format: 
the fast SAVE routine. 

The first major problem to be 
overcome in designing a fast loader is how 
to store each bit on the tape. Each bit is 
stored on tape as a pulse which goes 
through a high-low transition (see Figure 
1). The length of the total pulse decides 
whether the bit is a 1 or 0. A short pulse is a 
0 and a long pulse is a 1. The bit is flagged 
in the interrupt register on the falling 
edge of the pulse. 

The loader is a machine code program* 
which runs with the interrupts disabled, 
sets a timer between the two lengths, and 
when the timer runs out the interrupt 
register is checked to see if the pulse came 
in or not. If the falling edge of the pulse 
generates an interrupt before the timer 
runs out then the pulse was a zero, if not, 
it was a one. The bits are then rotated into 
a byte storage until eight bits have been 
read, thereby loading a full byte. 

Before any bytes can be read and 
stored, the loader must set itself to be in 
sync with the bits on the tape. This is done 
by writing a string of 0 bits with a single 1 
bit at every byte interval. The routine then 
tries to align itself by recognising the 
value of the byte. An example of a header 
byte for aligning would be the value 64, 
hex $40 or in binary: 01000000. A series of 
these bytes is written as the header. Only 
when this byte has been read in and 
recognised can the actual program be 
read without risk of alignment errors. 

The program isstored in different ways 
depending on how much program 
protection is desired. The simplest way of 
formatting the file is to first SAVE the two 
byte load address followed by the two 



BREAK 
THE 




WAVEFORM 
WRITTEN OUT 




























WAVEFORM 
READ BACK 




F = FLAG TRIGGERED ON FALLING EDGE OF PULSE 



Figure 1 



byte end address and then the actual file. 
The final byte following the end of the file 
is a checksum calculated by the SAVE 
routine and it's also calculated during 
loading. If the two values are the same, 
the LOAD was successful. The routine for 
this form of fast loader is given in Program 
1. 

Fast tape routines — making 
them work 

Putting the theory into practice to create 
the fast LOADER routines is not difficult. 
The actual timing for the SAVE routine 
was not calculated from any theoretical 
formula but was obtained merely by trial 
and error. The only guidelines were that 
the short pulse should be slightly shorter 
than half the long pulse, since the 
waveform of the pulse is evened out by 
the cassette hardware. The timing value 
used by the loader is just shorter than the 
time required before the long pulse 
reaches its falling edge. 



The high speed tape routine will SAVE 
a Basic program to tape in fast format and 
automatically put the fast LOAD routine 
into the filename where it is stored and, 
when loaded, will automatically start on 
the warm start vector. The routines are 
initialised by SYS(15616). A Basic program 
can be fast saved by using the SAVE 
command as normal but with a device 
number of 7, thus: 

SAV£"PROGRAM",7 

In addition the fast LOAD also makes 
use of the secondary address to auto run a 
program, thus: 

SAVE"PROGRAM"7,1 

This will cause the program to auto run 
when loaded back. With both routines, 
when a program has been saved using one 
of these fast loader SAVE routines it is 
unnecesary to LOAD anything before the 
program; it will LOAD directly from the 
LOAD command. 



lQflO 033C 


'FRST TAPE SAVE FOR THF COMMODORE 16. 




1010 fn?r 


' *♦♦♦* + + ♦*****♦♦♦*****+** + **♦♦♦"+♦♦♦*♦ 




t nc'O 0S3r 


; 






'THI^ ROUT INF IJT1 1 ^RVF A PROGRAM 
, 1 n 1 j twjkj 1 t i>t- hill w*n v c n r i\uvimii i 




1040 fl^T 


1 TO TAPF 90 THAT WHFN 1 OADFO BACK 




1 L>aJV L'.'J 1 - 


I TT UTI 1 1 OATl NFAR'I V A^ FA9T AS 




1 0f-~0 PIT 


1 THF 1S41 T1TSK TiPTVF 
! int. 1 Jtl I'lOK lfl\l vt. 




1 070 ii^r 


j 






IAN OPTION FOR AIIT0-RIIN IS 




1 f COOL' 


1 TNfl IITlFIl 




j i fii^ msp 


I 




1110 stira 

lilt 1 Jl'fO 








1 ha #<rsAWFr 


'CHANGF SAVF VECTOR 

■ vl 11 11 • to/ it u V LtoW f v(\ 




STA ffl^R 

W 111 * W*to* to* to* 


1 TO GO TO NEW 

i 1 - W 1 V 1 T i— t t 


1140 3D05 A^3B 


LBA tt>SAVVEC 


' SAVE ROUTINE 

* V* 1 » to- 1 ^to^to> T f * 1 H.. 


1 150 3D07 8D31C3 


STA $0331 




1 1 60 3D0A 60 


RTS 

l* l 




1170 3IiGE 


| 




1 J R0 STI0R 


l l-JFTlOF TNT0 THF SAVF COMMAND 

: ' ILI'UL 1 It 1 U 1 IIL. v'l] V t- <.>L*I II Hill i.' 




11Q0 3D0B 

A J _ V-' _ .L — -L 


' CHECKS FOR DEVICE *t? AND IF SO/ 




1200 3DGB 


'SAVE IN FAST FORMAT. 




1?10 3D0B 


! 




1??0 3D0R 4A 


SAVVEC PHA 




12^0 3D0C A5AE 


LDA *AE 


!GET DEVICE # 


1240 3DBE C907 


CMP #$07 

Wf II PT ^ ■ 


1 NUMBER 7^ 


1250 3D 10 FO04 

a ^— — — to A — 1 — — ¥ 


BEQ TSAVE 


( VES 


1?6m 31112 fift 


PI A 




1276 STM S 4FA4F1 


TMP tF 1 A4 


1 DO NORMAL SAVE 

. ul* nurti 11 il wi ivt 


i ?80 stj l 


; 




i?Q0 sin 6 


I <5flVF THF FII F FIRST THF AUTO 




1 too sn i ^ 

1 Off Oill D 


! LUni 1 KUUllflt JO onvtJJ 111 nURI InL 






ITftPF FORMAT Ffll 1 OUFTl RV THF FIf F 






! IK rriDl rUKiini. 




lo30 3D 16 


1 




Io40 3D lb rlDt»2 


Ibnvh LDH 


1 mup srvf rtiTipfss 

! 1 IUVC 3nVt niJUIxCOO 


1350 3D 18 8D7B3F 


STA STORE 




lofc<U 3D lb H5Bo 


LDn *B3 




1 07I1 OTi 1 Ti OI>7rOC 

13rW 3D ID 8DfC3r 


bin SIOKh+1 




1380 3D20 A53D 


LDH *9D 




13y0 3D22 SD7D3F 


STA STORE+2 




14U0 3D2j H59c 


LDH *9c 




1410 oD27 8D7E3F 


STA STORE+3 




14d0 JD2H A-jHD 


LDH *HD 


IfltTT Ctr OTlTiD 
! Ot 1 btL/. niiL'K. 


1 4S0 ^n?r ATlRFSF 


STR PI IMFI R 


IFI AO FOP AIITfl-PHN 


1 44R STl?F flfi0F 


1 TIV (JiOF 

LL> 7 Tf^t'i 




1 4 c i0 ^rni fi9?0 


1 TlA #$?0 

LIT) n?tv 




1460 3D33 99C03E 


L00P1 STA FLHAME,V 

^- - — p A III I kl 11 II II* / 1 


'BLANK FILENAME 


1 470 3TV>6 fifi 

I'll 1 JUwC OW 


tifv 

i-'L_ T 




i4ft0 'iin? 10FA 


FPI 1 00P1 




1490 3D39 ft4RB 


1 TIV f AR 

LIT *nc 


10FT FII FNAMF 1 FNOTH 

' VL 1 1 1 LL 1 if 1 1 IL LLIll 1 1 n 


1500 3D3B C011 


CPV tt* 1 1 

to/a I T» ^ A * 


I0RFATFR THAN 16^ 


1510 3D3D 9002 


BCC L00P2 


'NO 


1520 3D3F R010 


LDV #$10 


I0NLV 1ST 16 CHARS 


1530 3D41 88 


L00P2 DEV 




1540 3D42 3G08 


BMI TSAVE 1 




1550 3D44 BlfiF 


LDA >;'$AF>,V 


! GET FILENAME 


1560 3D46 99C03E 


STA FLNAME, V 


! STORE IT 


1570 3D49 4C413B 


JMP L00P2 


!D0 NEXT CHAR 


1580 3D4C 


! 




1590 3D4C R048 


TSAVE 1 LDV #FLNAME-L0ADER 




1600 3D4E B9773E 


TSAVE2 LDA LOADER-l.V 


!GET LOADER BVTE 


1616 3D51 99FF06 


STA $06FF,V 


! STORE IT TO SAVE 


1620 3B54 88 


DEV 




1630 3D55 D0F7 


BNE TSAVE2 


!F0R ALL BVTES 


1640 3D57 201 9E3 


JSR $E319 


! PRESS RECORD AND PLAV 


1650 3D5R R948 


LDA #$48 


!SET OUTPUT VECTOR TO 


1660 3D5C 8D2403 


STA $0324 


! LOADER 


1670 3D5F R903 


LDA #$03 






Program Listing 1 (cont.) 



— 



— 




1680 
1696 
1706 
1710 
1720 
1730 
1740 
1750 
1760 
1770 
17S0 
1790 
1800 
1810 
1820 
1830 
1840 
1850 
I860 
1870 
1886 
1890 
1900 
1910 
1920 
1930 
1940 
1950 
I960 
1970 
1980 
1990 

20OO 

2010 
2020 
2030 
2040 
2050 
2060 
2070 
2080 
2090 
2100 
2110 
2120 
2130 
2140 
2150 
2160 
2170 
2180 
2190 
2200 
2210 
2220 
2230 
2240 
2250 
2260 
2270 
2280 
2290 
2300 
2310 
2320 
2330 
2340 
2350 



3B61 

3D64 

3D66 

3D67 

3B68 

3D6B 

3D6D 

3D6F 

3D71 

3D74 

3D76 

3D78 

3D7A 

3D7C 

3D7E 

3D80 

3D32 

3D34 

3B86 

3DS9 

3H8B 

3D8E 

3D90 

3B93 

3D95 

3D96 

3D97 

3D99 

3D9B 

3B9D 

3D9F 

3DA1 

3DR3 

3Dfl6 

3BA8 
3BRA 
3BRC 
3DAE 
3BB1 
3DB3 
3DB6 
3DB8 
3BBB 
3DBD 
3DC0 
3DC2 
3DC5 
3DC8 
3DC8 
3BC8 
3DC8 
3BCB 
3DCD 
3DD0 
3DD2 
3DD5 
3BD7 
3DDA 
3DBC 
3BDF 
3DE1 
3DE3 
3DE5 
3DE7 
3DE9 
3DEC 
3DED 
3DEF 



v- 1 ±J £— \J V w 


STfl 


$0325 


n— *u i 


LDA 


#$01 


Oft 


TAX 




AS 


TRV 




20BRFF 


JSR 


fFFBfi 


R9BC 


LDR 


#$BC 


R?fR 


LDX 


#<FLNRME 


flfWF 


LDV 


#>FLNRME 


?f)F:flFF 

1 vJ A- 1 J— 1 | 


JSR 


$FFBD 




LDR 


#$00 


oj jri 


STfl 


$9fl 


R903 


LDR 


#$03 


v JtO 


STfl 


$23 


A9?4 


LBA 


#$24 


OJwt 


STfl 


$22 


1 i — * — 


LDR 


#$22 




LDV 


#$03 


fl^26 


LDX 


#$26 


ponaFF 


JSR 


$FFD8 


R94B 


LDR 


#$4B 


81)2493 


STfl 


$0324 


R9EC 


LDR 


#$EC 


8D2503 


STfl 


$0325 


R900 


LDfl 


#$00 


RR 


TAX 




R8 


TRV 




85B2 


STfl 


$B2 


R907 


LDfl 


#$07 




'-•JF\ 


$B3 


859E 


STfl 


$9E 




1 BR 


#$B0 


859D 


STfl 


$9B 


20C83D 


JSR 


FSflVE 


R980 


LDfl 


#$30 


859R 


STfl 


$9fl 


R200 


LDX 


#$00 


R000 


LDV 


#$00 


AD7B3F 


LDfl 


STORE 


85B2 


. STfl 


*B2 


RB7C3F 


LDfl 


ST0RE+1 


85B3 


STfl 


$B3 


RD7D3F 


LDfl 


STORE+2 


859D 


STfl 


$9B 


AD7E3F 


LDfl 


STORE+3 


859E 


STfl 


*9E 


20C83D 


JSR 


FSflVE 


4C0387 


JMP 


$8703 



!SET FILE DETAILS 



!SET FILENAME DETAILfl 
! DISABLE 'SAVING' 



SAVE $0324 



! TO $0326 



I SAVE IT 

! RESET OUTPUT VECTOR 



IFRST SAVE $6700 

! TO $07B0 
ISftVE IT 



! RESTORE SAVE ADDRESS 
! OF MAIN FILE 



! 

!THE FAST SAVE STARTS HERE 



20123E 


i 

FSflVE 


JSR 


WRTHBR 


A5B2 




LBA 


$B2 


20403E 




JSR 


WRTBVT 


A5B3 




LDfl 


$B3 


20403E 




JSR 


WRTBVT 


A59D 




LDfl 


$9D 


20403E 




JSR 


WRTBVT 


A59E 




LDfl 


*9E 


20403E 




JSR 


WRTBVT 


84B4 




STY 


$B4 


A4B2 




LDV 


$B2 


A900 




LDfl 


#$00 


85B2 




STR 


$B2 


B1B2 


TSAVLOOP 


LDfl 


<$B2>,V 


20403E 




JSR 


WRTBVT 


C8 




INV 




D002 




BNE 


TSAVE3 


E6B3 




INC 


$B3 



IFAST SAVE MAIN FILE 
IEXIT TO 'READV. ' 



.'WRITE THE HEADER 
(LORD ADDRESS LOW 
! LOAD ADDRESS HIGH 
!END ADDRESS LOW 
!END ADDRESS HIGH 



!0NE PROGRAM BVTE 
IBUMP PROGRAM POINTER 



C1 6 Utility 




Program Listing 1 (cont.) 



— 



— 



. 



2360 JDrl 


L4yu 




LrV 


» yD 


1 DrarucTi Pkin rip 


2370 3DF3 


R5B3 




1 Tin 


*T10 

*B3 


1 C T 1 fO 

! FILE? 


2o80 3DF5 


rrnr 

E59E 






*yfc 




">OQl» "3 TIP "7 

t jyo ollr i* 


OOPP 




ppp 


1 onYLUUr 


1 KJflT VFT 


^tipq 
£**ut/ ofry 






1 hp 


*Rd 










•J Oix 


LJPTRVT 

Wi\ 1 Pi 1 


'IJRITF rHFPKSUM 










t.JRTRTT 


Tl fl^F OFF 1 fiST BIT 


ojoia opm 






Liin 


Hi 1 R 






OUkJOr r 




0 1 n 


*r r 00 


1 PF^TflPF c;PPFFN 


^ilSti 1Ft1£ 


OTlOppp 




0 1 n 


■*FF^F 


1 PHM RflPI^ T M 


04(TQ QFCiQ 

c^du otuy 






Llln 


Tf»tJO 


ICTDP TftPP 
• 0 1 Ur 1 rirt 








CTQ 
O 1 M 






Oiipi^ opon 

t^OO OCUlJ 


CO 
DO 




CI T 




1 QTPPT TPO 


OJQfl IFflF 
tfjlJ OCtJC 






J OK 


♦ ppOA 

*rro*t 


; r<r_oc 1 1 ^ u 


tJtlu OC 1 1 


IT* 
OtJ 










o*; i o op * o 

— J 1 'J Ot i 












■imn orr i o 
2520 3E12 


78 


1 IDTUT1D 


CP I 




iniCQPi c TDn 
! UlontSLC. 1KW 


IC^rt IT 1 O 

2530 3E13 


8D3rrF 




STH 


»FF3F 


! ROn UU I 


wcaq op i (T 

£J*tO Ot 1 1> 






1 TtQ 
L.Un 


ff+Uo 


1 CTRDT TQPF 
■ 0 1 nK I I nre 


gna or i o 


OjU 1 




CTQ 

i> 1 H 


*01 




tjoo ofc l n 






■ TiO 

LUn 


ti*L*R 


1 Rl Pill' CPPFFkl 


cJ f O 1 L> 






0 1 n 


■tFFR^ 
*rpoD 




ocroia Oplp 


ret 


up a rip 1 


npv 




1 POI IQP enp TQPP 
ICnUot rUK trirt 


oc-Qfl -(rip 


fori' 






uporipi 


1 nrrk" Tn pfapu cppph 


tOCU --'Lk-Ll 


ftft 
00 




DFV 

iJC. T 






Pfilfl '-IF?'* 


TlOFfl 
vor n 




fine 


MFPHPl 




OCOC* Qpoe*: 






1 DA 


"*no 


1 CTT INITTPI TTMFP 


OiTOCl 0C"07 
tDOO JCtf 






0 1 n 




1 Vfil 1 IF TNTfl T? 

! V nLUL 111 1 U It 








1 DP 


tt J 1 u 










STfl 

>j 1 n 


*FF01 




2660 3E2F 


A910 




LDfl 


tt$10 


•CLEAR TIMER 








Jin 


JFFQQ 






HA4H 




1 nv 

Li* T 


tltdfi 

fF»*tt> 


inn fi4 T T MFQ 






HFftTIP 0 
ncniir\ti 


1 hm 

LUri 


an 0 




0 7C,o Opoo 






JoK 


1 IPTR'JT 


II IDT TP KJOf IIP 1C 

!WKI It VHLUh lb 


071 ^P^R 






TIP 1 . 1 








nap a 




RHP 






"Till or~or- 
2r30 3EoE 






LDfl 




1 ni m ti ir" l 1 ni i,-vn /-?/ 

!HND THEN CHHR 'Z 


2r4U 3L40 




* 










tfjnfl 


1 IC'TRVT 


bin 


*Hi) 


1 CTDPP riTPI IT RUTP 
•t>IUKt UlrUI di 1 1 


0"7j"rt Of - <t O 

2760 3E42 


45B4 




EOR 


- - A 

*B4 


•CHLCULHTE CHECKSUM 


0~7"?tfl Of** .« .1 

2770 3E44 


85B4 




ATA 

STH 


*B4 




o"7Qia o.Pii*r: 
tZfov JL4b 


QQQQ 




LDfl 


W9VO 


11 nno Q TTMPC 
■ LUUr 0 1 IHtS 


07QQ OCjIQ 

2ry0 Jh4« 


OJflt 




STfl 






ioUU Jt4M 




WBVTE1 


ROL 


f Dp 


! BI 1 IN 1 U LHKKY 


opto "^FdP 






JSR 


I.IPTPTT 
wit 1011 


II.IPrTP TUP RTT 
■ WK lit I nt D 1 I 


OOOQ OC'C 






DEC 


*HL 




poor, opsi 
tOO'J OCJ1 






BNE 






°Pi4fl TPS'-* 


Of 




RTS 






PP.SA ^FS4 




.' 








PP.£fl '■tPSd 




WRTBIT 


LDX 


TT-»DL 


1 fl^^l IMF S.HflRT 


?Pi7rt ^FSfi 






BCC 


URTT1 


I 1^ c HflRT 


9ftflA '-tFSft 

t-OOO XJO 


QOCC 

ritrr 




LDX 


MJCC 
«*rr 


1 Pi op CPT I nHfi 






WBIT1 


JSR 


UB T TO 


l^FT DIITPIIT HIGH 

I St 1 C I-' 1 1 KJ 1 111 \ >l 1 






! AND THEN LOW 










WBIT2 


LDfl 


»♦ 1 K» 


IIJOTT FflP TTMFP 

! wni 1 ruK 1 11 icp* 


2920 3E5F 


2C69FF 


WBIT3 


BIT 


*FF09 




2930 3E62 


F0FB 




BEG 


WBIT3 




2940 3E64 


48 




PHR 






2950 3E65 


FI900 




LDfl 


#*00 




2960 3E67 


8E02FF 




STX 


*FF02 


•RESET TIMER 


2970 3E6A 


8D03FF 




STfl 


*FF03 




2980 3E6D 


68 




PLft 






2990 3E6E 


8D09FF 




STfl 


*FF09 


! CLEAR TIMER 


3000 3E71 


R581 




LDfl 


tei 


'TOGGLE WRITE BIT 


3010 3E73 


4902 




EOR 


#*02 




3020 3E75 


8501 




STfl 


$01 




3030 3E77 


60 




RTS 








Program Listing 1 (cont.) 



304G 3£?5 










3050 


3E78 


1 THF I nflTlFR 
' 1 ml LUnL'Cn. 


^TfiPTC HFPF 






3066 


3E78 










3070 


3E78 A94S 


i noriFP 


1 flM BtdP 
LUn tf»*tO 






3080 


3E7A 8DFCFF 




<^Tfl *FFFP 






3090 


3E7D A983 




I Tift Jitfl') 






3100 


3E7F 8DFDFF 










3110 


3E82 8D3FFF 




o i n *rr or 




1 pdm ni it 


3120 


3E85 EE19FF 








I TNrPFfl^F RflftTlFK' Pfll Al IP 


3130 


3E88 18 








1 TFI I 1 AAT1FR Tfl 'RTS^ 


3140 3E89 204F63 




T^R *B34F 




II OAD A FILE 


3150 3E8C 8D3EFF 




C.TQ ♦FF'SF 




1 PflM T N 


3160 


3E8F A522 




1 TIP 4:00' 






3170 


3E91 8D19FF 




CTQ *FF 1 Q 




ipfc;ft RnpnFP 


3180 


3E94 58 




n t 




1 ^TftPT I Pi? 


3190 


3E95 203AFF 




TCD 4pCOQ 




I prcFT fillTPIIT VFf'TnP 


3208 


3E98 2084FF 




TC .R ffFFR4 






3210 3E9B A53E 




1 T"lH *AF 




1 rriMPfiPF rwFr[c^i im^ 


3220 3E9D C59D 




CHP t9Ti 

w ■ in * ju 






3230 3E9F D019 




RMF 1 nrtFRp 




1 niFFFRFNT-^l HAD EPPOP' 


324Q 


3Efll AD4707 




1 nfi *R7d7 
LL'n *t"f tr 




1 PI IN Fl hi", 


3250 3EA4 F66E 




Dpn rvTT 




IPI FAR, RFTIIPM Tfl PFATiV 


3260 3EA6 A9FF 




1 Tim ttfFF 




I TI IRN flFF n IP^flR 
. 1 ui\ii urr L»ui*o'- , i'. 


3270 


3Efi8 3D0CFF 




CTQ *FFflP 




1 i TI l<5T TM PAQF^ 
\ > -J 'Jo 1 in L-nOC 


3280 


3EAB 8D0DFF 




CTQ *FFPiri 






3290 


3EAE 20BE8B 








1 PFPFflPM ''PIIW 


3300 


3EB1 4CDC8B 




imp *^Rrip 

J fir *or>UL- 




■ CACtU 1 1 nfcrt 1 s 1 n 1 tl Itii I 


3310 3EB4 


! 








3320 3EB4 209DSA EXIT 


tcp *QQQTi 




1 PFPFTrPM P** 


3330 


3EB7 4C0387 




imp tftycn 




; Kern.' r . 


3340 


3EBA 










3350 


3EBA A21D 


LODERR 






im FfiP 'i riwri* 


3360 


3EBC 4CS386 




TMP *C'4CQl! 




! OUTPUT ERROR 


3370 


3EBF 










338© 


3EBF 00 


RUNFLG 


rT 1 f 




1 ("'O TO PI IM P'prn'iPwM 
! IU run rrUwnii 


3390 


3EC0 










3400 


3EC0 


!*=*0337 








3410 


3EC0 










3420 


3EC0 202020 


FLNAME * 


TNT 






3430 


3ED1 


! 17 SPACES 








3440 


3ED1 


!*=*0348 








3450 


3ED1 AD19FF 




LDA *FF19 




!SAVE BORDER COLOUR 


3460 


3ED4 8522 




STA $22 






3470 


3EB6 38 




SEC 




! TELL LOADER TO 'JMP' 


3480 


3ED7 78 




SEI 




! DISABLE IRQ 


3490 


3ED8 


!*=$034F 






3500 


3ED8 08 




PHP 




ISAVE STATUS 


3510 


3ED9 209303 




JSR $0393 




! READ THE HEADER 


3520 


3EBC 20B883 




JSR *93B8 




IREAD LOAD LOW 


3530 


3EDF AS 




TflV 




'INTO .V 


3540 


3EE0 R900 




lda »t00 




IZERO LOW BYTE 


3550 


3EE2 85B2 




STA *B2 






3560 


3EE4 20B863 




JSR *(J3B3 




IREAD LOAD HIGH 


3570 


3EE7 85B3 




bTA fB3 






3580 3EE9 20B863 




JSR J83B8 




!READ END LOW 


3590 


3EEC 852D 




STfl *2D 




3600 3EEE 20BS63 




JSR f 0?EA 






3610 3EF1 852E 




STA *2E 




3620 3EF3 20B803 TLOftDl 


JSR *03BS 




IREAD BYTE 


3630 3EF6 91B2 




STA <$B2),V 




'STORE IT 


3640 3EF8 459E 




E0R «9E 




! CALCULATE CHECKSUM 


3650 


3EFA 859E 




STA *9E 






3660 3EFC C8 




I NY 




1 INCREMENT POINTER 


3670 3EFD D005 




BNE TL0AB2 




INOT NEW PAGE 


3680 


3EFF E6E3 




INC *B3 




I INCREMENT HIGH BYTE 


3690 3F01 EE19FF 




INC *FF19 




1 INCREASE BORDER COLOUR 


3700 3F04 C42D 


TL0AD2 


CPV *2D 




IENS OF FILE? 


3710 


3F66 A5B3 




LDA *B3 





C1 6 Utility 





Program Listing 1 (cont.) 




3736 3F0R 


90E7 


BCC 


TL0AB1 


'NOT VET 




3740 3F0C 


20BS03 


JSR 


$03BS 


! REAP CHECKSUM 




3750 3F0F 


859D 


STA 


$9B 


[STORE IT 




3760 3F11 


A90S 


LBA 


#$08 


ISTOP TAPE 




3770 3F13 


8501 


STA 


$01 






3730 3F15 


28 


PLP 




! RESTORE STATUS 




3790 3F16 


B001 


BCS 


L0AD1 


! CARRY SET, JMP $0700 




3800 3F18 


60 


RTS 




IELSE 'RTS' 




3810 3F19 


4C0007 LOfiBl 


JMP 


10760 






3820 3F1C 


i 










3S30 3F1C 


! *-$ 0393 










3840 3F1C 


! 










3350 3F1C 


A900 


LBA 


#$00 


! START TAPE 




3860 3F1E 


8501 


STfl 


$01 






3870 3F20 


Cft RHEAD1 


BEX 




IWflIT FOP TAPE BECK 




3880 3F21 


D8FD 


BNE 


RHEAB1 


! TO REACH FULL SPEEB 




3890 3F23 


88 


BEY 








3900 3F24 


B0FA 


BNE 


RHEAB1 






3910 3F26 


849E 


STV 


$9E 


!ZERO CHECKSUM 




3920 3F28 


R200 


LBX 


#$00 






3930 3F2A 


2OC603 RHEAD2 


JSR 


$03C6 


! REAB BIT 




3940 3F2D 


26flC 


ROL 


$flC 


IINTO BYTE 




3950 3F2F 


A5AC 


LBA 


$AC 






3960 3F31 


C910 


CMP 


#$10 


! VALUE 16? 




3970 3F33 


D0F5 


BNE 


RHEAB2 


!N0 




3980 3F35 


20BS03 RHEAP3 


JSR 


J03B8 


! REflB BYTE 




3990 3F38 


C910 


CMP 


#$10 


! 16? 




4000 3F3A 


F0F9 


BEG 


RHEAB3 


IVES 




4010 3F3C 


C95A 


CMP 


#$5fi 


ICHflR 'Z'? 




4020 3F3E 


BOEA 


BNE 


RHEAB2 


!N0, TRY flGftIN 




4030 3F40 


60 


RTS 








4040 3F41 












4050 3F41 


! *=$03B8 










4060 3F41 












4070 3F41 


A901 


LDfl 


#$01 


!SET FOR 8 TIMES 




4080 3F43 


85AC 


STfl 


$AC 






4090 3F45 


20C603 GBVTE1 


JSR 


$03C6 


IREftB BIT 




4100 3F48 


26AC 


ROL 


$AC 


! INTO BYTE 




4110 3F4A 


90F9 


BCC 


GBVTE1 






4120 3F4C 


A5AC 


LBfl 


$AC 


! LOAD BYTE 




4130 3F4E 


60 


RTS 








414R ^F4F 












h l -jfcj or *tr 


! *— »UoL-D 










AiCCt QFdF 

not) or**r 
















1 TlH 


at t ft 






*r l Ov Or O I 


04(> 1 ftp T T 1 


PT T 


* m KJ 1 


IIJATT FfiP INPUT 
! wn i i r 'jf\ i ur i 




*t I ?f Or Oo 






fiPI T» 


f LOW 




4200 3F5S 




BIT 




•WAIT FOR INPUT 




i f or o f 


FOFP 
r ur t< 




i' i i & 


' HIGH 




tcctj or jj 


t^c^r r 


ni 11.' 




I TF^T TIMFR 
i t»' i ill 1 1— r\ 




"cot- 1 or ji. 




r ur. 
rnn 












i rip 


HtMl 


>PFftFT TIMFP 

' • C OIL 1 111 'l-r- 




4250 3F5F 




l_ L 1 n 


ttf 7ft 






4260 3F61 


8E02FF 


STX 


$FFn2 






4270 3F64 


8D03FF 


STfl 


$FF03 






4280 3F67 


A910 


LBfl 


#$10 


i CLEAR TIMER 




4290 3F69 


8D09FF 


STfl 


$FF09 






4300 3F6C 


AD19FF 


LBfl 


$FF19 


! INCREMENT BORBER 




4310 3F6F 


18 


CLC 




! LUMINANCE 




4320 3F70 


6910 


ABC 


#$10 






4330 3F72 


8D19FF 


STA 


$FF19 






4340 3F75 


68 


PLfl 




! GET TIMER STATUS 




4350 3F76 


0A 


flSL 


fl 


! SHIFT INTO CARRY 




4360 3F77 


0fl 


ASL 


fl 


! IF TIMER RAN OUT, 




4370 3F78 


0A 


ASL 


fl 


! CARRY SET, BIT WAS 




4380 3F79 


0A 


ASL 


A 


! fl '1' ELSE fl / 0" 




4390 3F7fl 


60 


RTS 








4400 3F7B 


( 










4410 3F7B 


8000OG STORE 


BVT 


0-0,0,0 







27 



C1 6 Utility 



Program Listing 2 BASIC Loader 



1 000 
1B10 
1020 
1030 
1040 
1050 
1060 
1070 

1080 

1090 

1100 
1110 
1120 

1130 

1140 

1150 

1160 

END 

1170 

1180 

1190 

1200 

1210 
1220 
1230 
1240 
1250 
1260 



1290 

1300 

1310 
1326 
1330 
1340 
1350 
1360 
1370 
1380 
1390 

1400 

1410 
1420 
1430 
1440 
1450 
1460 
1478 
1480 
149Q 
1500 
1510 
1520 
1530 
1540 
1550 
1560 
1570 
15S0 
1590 
1600 
1610 
1620 
1630 
1640 
1650 
1660 



REM ***#*******#****#*#*********** 

REM # FAST SAVE ROUTINE FOR THE * 
REM *C0MMODORE 16. THIS ROUTINE * 
REM #USES UP ONLV 758 BVTES OF * 
REM *BflSIC MEMORV. * 
REM * * 
REM * COPVRIGHT 1985 * 
REM * ZIFRA SOFTWARE LTD. * 
REM * # 
REM ***######*********#*#******#*# 

POKE 51,0= POKE 53,0-POKE 55,0= POKE 52,61 :P0KE 54,61 :POKE 56,61 :CLR 

I=DEC<"3D00") =T=0 

READ A: IF A=-l THEN 1150 

POKE I,A'T=T+A 

1=1+1 :GOTO 1120 

IF TO74750 THEN PRINT"W«;HECKSUM ERROR : "T"SHOULD BE 74750": END 

IF IO'DEC<"3F7B"> THEN PR I NT " JSftNUMBER OF VALUES ERROR :"I"SHOULB BE 16251": 



PRINT"MM DATA ENTERED CORRECTLV. " 
PRINT"TO FAST SAVE A BASIC PROGRAM 
PR I NT" Kti SAVE"CHR$(34) "FILENAME 
PR I NT "M OR K3AVE"CHR*<34) "FILENAME 
SVS DECC"3D00"):END 
DATA169, 11,141, 48,3, 169,61 
DATA141,49, 3, 96, 72, 165, 174 
DATA201 , 7, 240, 4 , 104, 76, 164 
DATA241 , 165, 178, 141 , 123,63, 165 
DATA179, 141, 124,63, 165,157,141 
DATA125,63, 165, 15S, 141, 126,63 
DATA165, 173, 141, 191,62, 160, 15 
DATA169,32, 153, 192,62, 136, 16 
DATA250, 164, 171 , 192, 17, 144,2 
DATA 160, 16, 136,48,8, 177, 175 
DATA153, 192,62, 76,65,61 , 160 
DATA72, 185, 119, 62, 153, 255, 6 
DATA 1 36 , 208 , 247 , 32 , 25 , 227 , 1 69 
DATA72, 141 , 36, 3, 169, 3, 141 
DATA37, 3, 169, 1 , 170, 163, 32 
DATA186,255, 169, 188, 162, 192, 160 
DATA62,32, 189,255, 169,0, 133 
DATA 1 54 , 1 69 , 3 , 1 33 , 35 , 1 69 , 36 
DATA133,34, 169,34, 160,3, 162 
DATA38, 32, 216, 255, 169, 75, 141 
DATA36, 3, 169, 236, 141 , 37, 3 
DATA169,0, 170, 168, 133, 178, 169 
DATA7, 133, 179, 133, 158, 169, 176 
DATA133, 157, 32, 200, 61 , 169, 128 
DATA133, 154, 162,0, 160,0, 173 
DATA123,63, 133, 178, 173, 124,63 
DATA133, 179, 173, 125,63, 133, 157 
DATA 173, 126,63, 133, 158,32,200 
DATA6 1 , 76 , 3 , 1 35 , 32 , 1 8 , 62 
DATA 165, 178,32,64,62, 165, 179 
DATA32, 64 , 62, 165, 157, 32, 64 
DAT A62 , 1 65 , 1 58 , 32 , 64 , 62 , 1 32 
DATA 180, 164, 178, 169,0, 133, 178 
DATA1 77, 178, 32, 64, 62, 200, 208 
DATA2,230, 179, 196, 157, 165, 179 
DATA229 , 1 58 , 1 44 , 233 , 1 65 , 1 80 , 32 
DAT A64 , 62 , 32 , 84 , 62 , 1 69 , 27 
DATA141,6,255, 141,62,255, 169 
DATA8, 133, 1 , 83, 32, 132,255 
DATA96, 120, 141 , 63, 255, 169, 0 
DATA133, 1,169, 11,141,6,255 
DAT A202 , 208 , 253 , 1 36 , 208 , 250 , 1 69 
DATA 160, 141,2,255, 169,0, 141 
DATA3,255, 169, 16, 141,9,255 
DAT A 1 60 , 64 , 1 69 , 1 6 , 32 , 64 , 62 



USE:" 
"CHR*<34)" 
"CHR*C34>" 

1670 
1680 
1690 
1700 
1710 
1720 
1730 
1740 
1750 
1760 
1770 
1780 
1790 
180O 
1810 
1820 
1830 
1840 
1850 
I860 
1870 
18S0 
1890 
1900 
1910 
1920 
1930 
1940 
1950 
I960 
1970 
1980 
1990 

2000 
2010 

2020 
2'33Q 
2040 
2O50 
2G60 
2070 
2030 
2090 

2100 

2110 
2120 



,7" 

, 7, 1 TO AUTO-RUN. " 

DATA136,208,248, 169,90, 133, 171 
DATA69, 180, 133, 180, 169,8, 133 
DAT A 1 72 , 33 , 1 ? 1 , 32 , 84 , 62 , 1 98 
DATA172,208,247,96,162,108, 144 
DATA2, 162, 255, 32, 93, 62, 169 
DATA 1 6 , 44 , 9 , 255 , 240 , 25 1 , 72 
DATA169.0, 142,2,255, 141,3 
DAT A255 , 1 04 , 1 4 1 , 9 , 255 , 1 65 , 1 
DATA73, 2, 133, 1 , 96, 169, 72 
DATA141,252,255, 169,3, 141,253 
DATA255, 141 , 63, 255, 233, 25, 255 
DATA24, 32, 79, 3, 14 1 , 62, 255 
DATA 1 65 , 34 , 1 4 1 , 25 , 255 , 83 , 32 
DATA138,255,32, 132,255, 165, 158 
DATA 1 97 , 1 57 , 208 , 25 , 1 73 , 7 1 , 7 
DATA240, 14, 169, 255, 141, 12,255 
DATA141, 13,255,32, 190, 139, 76 
DATA220, 139,32, 157, 138,76,3 
DATA135, 162,29, 76, 131, 134,0 
D AT A32 ,32,32,32,32,32,32 
DAT A32 , 32 , 32 , 32 , 32 , 32 , 32 
DAT A32 , 32 , 32, 1 73, 25 , 255 , 1 33 
DAT A34 , 56 , 1 20 , 8 , 32 , 1 47 , 3 
DATA32, 184,3, 168, 169,0, 133 
DATA 178, 32, 184, 3, 133, 179, 32 
DATA184,3, 133,45,32, 184,3 
DATA133,46,32, 184,3, 145, 178 
DATA69, 158, 133, 158, 200, 208, 5 
DATA230, 179,238,25,255, 196,45 
DAT A 1 65 , 1 79 , 229 , 46 , 1 4 4 , 23 1 , 32 
DATA184,3, 133, 157, 169,8, 133 
DATA 1,40, 176, 1,96,76,0 
DATA 7, 169,0, 133, 1 ,202,203 



DATAi 



136,208,250, 132, 158, 162 



DATA0, 32, 193,3,38, 172,165 
DATA172,201, 16,208,245,32, 184 
DATA3, 201 , 16, 240, 249, 201 , 90 
DATA203, 234,96, 169, 1 , 133, 172 
DATA32, 198, 3, 38, 1 72, 1 44 , 249 
DATA 165, 172,96, 169, 16,36, 1 
DATA203, 252, 36, 1 , 240, 252, 45 
DATA9,255,72, 169, 1,162, 120 
DAT A 1 42 , 2 , 255 , 1 4 1 , 3 , 255 , 1 69 
DATA16, 141,9,255,173,25,255 
DATA24, 105, 16, 141,25,255, 104 
DATA10, 10, 10, 10,96,-1 




TROJAN 
CAD-MASTER 

THE ULTIMATE IN GRAPHICS TOOLS 



SUPERB GRAPHICS SOFTWARE 
PLUS 

A TOP QUALITY LIGHT PEN 



Discover the exciting world of creating your own 
graphics on screen. 

• FREEHAND DRAW - 5 pen thicknesses inc. Quills 

• PAINT BRUSH - for the artistic touch 

• FILL ANY SHAPE - use 1 6 colours and 1 1 patterns. 

• GEOMETRIC SHAPES - circles, boxes, triangles, lines 
& banding. 

• DYNAMIC RUBBER BANDING on all geometric options. 

• PIN-POINT FUNCTION - tor pixel accuracy on all .unctions. 
Plus many more too numerous to mention in this ad. All these 

features in the Program + a top quality Light Pen and an 
Instruction booklet in one reasonably priced package. Easy to use 
for creating colourful, pictures or technical drawings. Ideal for use 
by all ages of micro users. Full back-up service from 
manufacturers. Available at good dealers or direct 
from Trojan Products. 





Micro Computer Software A Accessories 

Send cheque/P.O. to. 
TROJAN PRODUCTS 
166. Dertwyn. Dunvant. Swansea SA2 7PF 
Tel: (0792)205491. 
TRADE ENQUIRIES WELCOMED 



I VSiii ;:ni ! 



COMMODORE SOFTWARE SPECIALISTS 




Voicemaster by Annog II Of d) 6196 

3 Channewe Adventu 
Amu on (4 disks) 



RRP 2U 



dfw Database by Dialog 
Home Accounts Manager 
Superbase 64 by Precision special 
S^'Ukne Sla'te' 39.95 
Superscript Special 69 95 

Triangle (int. DB SS WP} 19 96 

Vuasta- 64 XL4 99 96 



Aipna Build 

Commodore O' Level Subject* 
Donald Duck's Playground NEW 
French Mistress A A B (each) 
r,c -nil- vasts* asb [each] 
Oet Ready to Read(3yrs-((4 I 
Mr T seres (4-9yrs) 




96 
995 
9 96 
895 
695 
)11.96 
995 



17.00 
14.95 
69.95 
3595 
57.95 
17.95 
8900 



8.50 
8.75 
8-50 
JM 
750 
9.95 
8.50 



B«tt<e of Britain Nfw 
Carrier Force NEW 59.95 

Combat Leader & Battle lor Nmdy' 
FieiQotF-e NEW 39 95 

Germany 1965 NEW 
Kennedy Approach' NEW 
Spitfire Aoe" 

SuDloglc Flight Simulator II 
SuWogiC Flight Simulator II 
Theatre Europe' 
Knights ol the Desert 
747 Flight Simulator (Oocaoft) 



59 96 
14.95 



49 95 



995 

19.95 
13 



8.50 
52.50 
19.95 
35.60 
49.95 
12.75 
8.50 



35.95 
B.60 
17.25 
10.45 



re* Special 

19.96 

Dragonwortd (5 disks) 19.95 
Hrtcn-Hiker'a Guide to the Gaia«y3' 50 



Lord Ol the RingaT 
Never Ending Story 
PianetfaH by infocom 
Rod Moon 
Sea* of Blood 
Seas u Her by Infocom 
Ultima III 
Ultima IV 
Wishbringer by In 
orm in Paradise 



Fight Night" 
Goon tea 1 

possible Mission* 
Little Computer People" 
Lord* of Midnight 
Mercenary* 
Monopoly" 
Racing Destruction Set* 
Rescue from Fractutu** 
ScaloxtrSe* 
Scrabble* 

Spy va Spy I or II (Island 
Starion 
Strip Poker" 

Summer Games I* or II' 
Superman* 
They Sold a Million" 
Wmter Games' 



NEW 
NEW 
NEW 

NEW 
NEW 

NEW 

NEW 



18 95 

995 
47 50 

696 

996 
38 75 
1996 
62 00 
37 60 

996 



15.00 1 

18.00 d 

18.00 d 

24.96 d 

13.75 d 

850 t 

19.95 d 

5.95 t 

8.50 d 

19.95 d 

18.00 d 

55.00 d 

32.50 d 

850 I 
d 




95 
9.96 
NEW 995 
95 

NEW 996 
12.95 
NEW 1196 
NEW 995 
NEW 996 
1296 
Capor) 995 

NEW 

96 



11Q 

1050 I 

850 1 

850 • 

11 BO I 



Elecirosound NEW 14.95 

Jetpac* Compiler* 14.96 

LOGO Special 34 95 

Machine Code Tutor 14 96 

SIMON'S BASIC Special 49 95 
Suoe> 
Mi ta i m 



j>e d - diskette c : ROM cartridge '- Disc version . 

HUNDREDS MORE TITLES AVAILABLE — ALL AT DISCOUNT PRICES 
MOST C16 PLUS 4 and C121 tides available — ALL win similar discounts to C64*" 

Please send stamp for our complete list (state wh>cn computer) 
include 50p for Post and Packing for ail orders less than £20 Outside UK please include CI 
us 75p for each additional item on all orders. Send Cheque. Eurocheque. Sterling money order 
or UK Postal Order with order to: 



PO Box 36 
DUNSTABLE 



UK SOFT CENTRE LTD (YC) 



Telephone: 
DUNSTABLE 
(0582) 607929 



Electronic Aids (lewkesbury) Ltd. 

Accounting and Educational Software 

For Commodore 64 and 128 
SALES LEDGER with invoicing £98.00 + VAT 
Invoices laid out to your own design, statements, aged analysis, 
daybook, period and VAT report, label printing etc. etc. 

FINAL ACCOUNTS £60.00 + VAT 

Nominal ledger with inputs tor sales, purchases, cash and 
journals, allows you to structure your own reports e.g. profit & 
loss, balance sheet, department report etc. Complete audio trail, 
trial balance, opening balances, last month's trial balance, 
monthly totals on all accounts etc. 

PURCHASE LEDGER £69.00 + VAT 

Sales ledger, purchase ledger and final accounts (as above) all 
combined into one integrated package. 

INTEGRATED ACCOUNTS £195.00 + VAT 

Sales ledger, purchase ledger and final accounts (as above) all 
combined into one integrated package. 

SEVENPACK £45.22 + VAT 

A simple integrated package for very small businesses. Purchase 
& Sales Control, invoicing, simple nominal ledger, statements, 
ordinary stock control, stock control for car parts and address 

label printing. 

PAYROLL with new Nl rules £99.50 + VAT 

Easy to use. but allows 7 overtime/ piecework rates, 4 pre-tax 
adjustments incl. SSP. 6 after-tax adjustments, deduction card, 
coinage analysis etc. 

ELECTRONIC AIDS LTD. 
62 High Street, EVESHAM, 
Worcs. WR11 4HG 
Phone 0386 - 49339 

Money back on any Item returned within 21 days. 



TAPE BACK-UP DEVICES FOR VIC 20 CBM 64 C128 



DCL1 The DC LI links t*o Datasette*. so mat a back-up can oe made directly from 

INTERFACE one datasette to a second datasette without the program entering the 
computer No software needed Backs-up ALL programs including Turbos etc 
' Thousands sold ' ORDER AS DCL 1 PRICE £10 00 

OCL4 You can made a back-up copy on either a second datasette OR on a standard 

INTERFACE audio recorder with this interface without the program entering the computer.' 

No software needed A LED data monitor shows the start & end of programs. 
Back*- up ALL programs including Turbos etc 
• Very Popular * ORDER AS DCL 4 Price El 7O0 

NOW WITH IMPROVEO CIRCUITRV 
DCL4A SIMILAR lo the DCL* but tiled with an Audible data monitor. 

INTERFACE "NEW" ORDER AS DCL4A PRICE £1850 

NOW WITH IMPROVED CIRCUITRV 



OUR CATALOGUE 



TAPE HEAD DEMAGNETISER. Mains | 
AZIMUTH ALIGNMENT CASSETTE 
DATASETTE DUST COVER 
SUPER TAPE HEAD CLEANING KIT 
GT LOADER 1541 FAST DISK LOADER CART 
GT LOADER as above with reset swtcn 
DISK DRIVE DUST COVER 
DISK DRIVE HEAD CLEANING KIT 
CENTRONICS INTERFACE (user port type) 
THE STICK. BASELESS JOYSTICK 
QUICKSHOT MK11 JOYSTICK 
JOYSTICK EXTENSION LEAD (3m long) 
CIS JOYSTICK ADAPTOR 

TWIN OUTLET MAINS INTERFERENCE FILTER 
CBM 64 SCART TV/MONITOR LEAD 
CBM 64 SCART. FERGUSON MCOl LEAD 
COMPUTER/ AERIAL SIGNAL COMBINER 
PAPER. FAN FOLD. TEAR OFF. 500 appro" 
PRINTER LABELS 89'36mm PER 1000 appro> 



Order no 
Ofdjes IM 
Order no 
Order no 
Order no 
Order no 
Order no 
Order no 
Order no 
Order no 
Order no 
Order no 
Ordtt no 
Order no 
Order no 
Order no 
Order no 



THD1 £6 30 
DHA1. £7.50 
DC01 C3 45 
CLK3 £5 95 
GTL1. £20.00 
GTL2 £2200 
DOC1. £4 55 
CLK1 £5 49 
PPII. £17.95 
JTSl £12 95 
JOM1 £1195 
JSC? £695 
JSC! £425 
MPC1 £20 95 
TML7 £4 49 
TMLfl £299 
TM124 £2 49 




C128 RGB TO VIDEO ADAPTOR ENABLES YOU TOUSEONE TV OR MONITOR IN ANY MODE. 
SWITCH SELECTS BETWEEN VIDEO & RGB OUTPUTS VERSIONS AVAILABLE FOP 
MONITOR AND/OR TV. SAE FOR DETAILS. FROM £29.95. 



FAST CBM 64 REPAIRS " 



STANDARD SERVICE INCLUDING PARTS. LABOUR. POSTAGE. VAT £27 50 

EXPRESS SERVICE AS ABOVE BUT RETURN OF POST SERVICE 13* SO 

REPLACEMENT CBM 64 POWER PACKS £29 50 

1541 DISK DRIVE ALIGNMENT FULLY INCLUSIVE £14 90 

Please state faults The above prices cover electrical parts, replacement keyboard, case, peb or 
power supply extra 



FREE CATALOGUE, Please send 17p stamp 



FAST MAIL ORDER SERVICE. ALL PRICES FULL INCLUSIVE " _ 
PLUS 10 DAY MONEY BACK GUARANTEE ON BACK-UP DEVICES " 



Cheaper price* I 
availability 



callers to our shop at 329 Tong Street. Bradford 4. Please phone f .ret to check 



PAYMENT ACCEPTED BY. CASH. CHEQUE. PO. MONEY ORDER. BANKERS DRAFT. 
TPANSCASH (For Transcash order and pay at any Post Office, our account no. is 660 3659 
EXPORTS. Please add £1 00. payment in sterling only please 

TRILOGIC (Dept YC) 29 HOLME LANE, BRADFORD 
BD4 0QA Tel: 0274 684289 




BEFORE LAUNCHING FORTH THIS 
month - a small confession. I've been 
writing this column for several months 
now and though my teaching qualifica- 
tions are verifiable, the same cannot be 
said for my programming skills. I 
therefore decided that it was about time I 
rectified the situation by learning how to 
program in Basic. I soon discovered that 
this is not as easy as it would seem. The 
first question is to establish the best 
method of learning. Three approaches 
immediately spring to mind. 

The first is to sign up at a local school or 
college for night classes. These are 
available for a number of languages with a 
bias towards BBC Basic. There are a 
number of snags however. Night classes 
are limited to the older age groups 
making them unavailable to youngsters. 
They also cost money. 

If you want to use this route, you are 
constrained by a fixed timetable and term 
length. You must also learn what the 
teachers choose to teach. Some teachers 
have a strange idea as to what material a 
student needs. My sister is currently 
struggling through the mysteries of binary 
and hexadecimal as part of her course on 
Basic! If she was learning machine code I 
could understand it, but not for Basic. It's 
a good idea to find a course which offers 
some practical work as well as lectures so 
that you can get hands on experience with 
the help of the teacher. 

A second approach is to find a home 
based course and work through it under 
your own steam. The alternatives are 
either a correspondence course, if you 
can find one, or a book/software 
package. The main drawback with this 
method is that if you get stuck, you don't 
have anyone to bail you out. 

Alternatively, you could find a tutor. 
There are always knowledgeable 
enthusiasts around who would spend 
some time passing on information for a 
small sum. The problem is finding them. 

Probably the best approach for most 
people is to combine the latter two. 

This month I intend to look at a 
number of book/software systems 
currently available. 

Most of you will have discovered the 
lack of help provided when you buy a 
Commodore machine. The C-16 does 
come with a Basic tutor but this is more of 
a sales gimmick. The actual manuals are 
next to useless. This is rather strange when 
you consider the tuition provided with 
other products. Many manufacturers of 
knitting machines and musical instru- 
ments provide lessons or other teaching 



material included in the price. Why can't 
computer manufacturers do it too? 

One small word of warning. A large 
number of publishers have spotted the 
short comings of the Commodore 
manuals and have produced books 
teaching Basic and the inner workings of 
the computer. Many of these books are 
hardly any better than the Commodore 
manuals and you should purchase with 
care. 

As a preliminary guide, I shall describe 
a number of packages covering different 
age-groups and prices. 

Commodore offers a package for the 
Vic-20, C64, C-16 and Plus/4 called An 
Introduction to Basic. Whilst orginally 
sold as a separate package, it has sub- 
sequently been offered in the various 
Starter Packs. You may be able to locate it 
separately if you look hard enough or 
contact Commodore. 

The package comprises of two 
cassettes and a book. The manual is set out 
as a series of experiments which are 
linked to programs on tape. The material 
ranges from setting the computer up to 
fairly advanced programming. I was 
pleased to see the frequent use of flow 
diagrams to demonstrate the operation of 
the programs. The approach is structured 
so that you must cover the early material 
before progressing through the manual. 
Overall it's quite a reasonable system 
which does its job well enough. 

For the younger users, Collins offers a 
book entitled DATA LOG. This is a work 
book which has the appeal of a simple 
approach. Each page gently leads the user 
through the maze of programming, 
sprites and sound. The entire book is 
written in the form of a space ship's log 
with each section or exercise adding to 
the scenario. For example using screen 
printing and tabulation for the passenger 
list, IF.. .THEN for ticket details and using a 
sprite to design the captain's badge. The 
material is not covered in great depth but 
the book gives a good introduction to the 
use of Basic. At £2.95 it's also good value 
for money. 

Glentop Publishers has a wide range of 
teaching books and book/software 
packages available for a number of 
Commodore machines. Originally 
starting with the Dr Watson series of 
books for Basic and machine code, 
Glentop moved on to the Watson's Notes 
series for the C64. This is a six book series 
which deals with most facets of the C64. 



The early volumes cover programming in 
Basic moving on to graphics in the later 
parts. The layout of the material is clear 
and tidy and is handled in a logical 
manner. If I do have a complaint it is that 
the content of the books is perhapsa little 
thin. At £2.95 per volume, I would have 
expected a little more depth. Notwith- 
standing this drawback, the series is well 
worth a close look. 

Another good quality product from 
Glentop is Basic Adventure Part 1. This 
book/software package teaches the rudi- 
ments of Basic to the seven to 11 age 
group. The book takes the form of a 
science fiction story involving Dr Watson. 
Programming concepts are introduced in 
small routines which compliment the text. 
Overall a novel and effective way of 
camouflage teaching programming. 

Commodore 64 Basic from Wiley is a 
meaty introduction to Basic. This is part of 
a Self Teaching guide series and uses self 
checking and exercises to aid you. The 
material covered is much as expected 
covering all facets of Basic, graphics and 
sound. Flowsheets are used extensively 
helping the pupil to develop a logical 
approach to programming. The book is 
sufficiently comprehensive that even 
once you have mastered programming in 
Basic, there are more advanced areas to 
look at. This is exemplified by the section 
on databases and data storage on disk and 
cassette. The author is clearly American 
and this does unfortunately become 
apparent in the text with the introduction 
of trans-Atlantic colloquialisms. Provided 
you can stand the literary style, it's book is 
pretty good value albeit a little pricey. 

For C-16 owners, Shiva offers the 
Gateway to Programming series. This 
quartet of books tackles the subject in a 
similar manner to the Dr Watson series 
by using Sherlock Holmes stories to 
illustrate ideas. The text is humorous with 
lots of cartoon illustrations. In spite of the 
£4.95 price per volume, these are good 
value for money and worth a look. 

Doming Kindersley produces a Com- 
modore 64 Starter Pack consisting of 
books one and two of their Screen shots 
books and a typing tutor cassette. The 
screen shots are full colour pictures of 
listings as they appear on the monitor and 
illustrations of the results you can expect 
from the program. The books step gently 
through learning Basic and the cassette 
should help you to get to grips with the 
keyboard. The boxed set costs £15.95 but 
if the price is off-putting each book in the 
set can be bought separately. 

All of the books described here have 
the virtue of using a well thought out 
approach to teaching Basic. In addition 
most are cheap and almost within pocket 
money range. 




7\ 




■■I F - 



for;- 

* Spectrum 

* Amstrad 
4 Commodore 

64/128 

Computer Owne> 




YES.... place an order for our magazine and we'll send you one of the above games absolutely free. We 
will also enrol you in our Discount Software Club enabling you to purchase software £t utilities at huge 
savings over shop prices. We offer all the latest titles at up to £4 off shop prices (see panel for details) 
plus many older products at pocket money prices. In all we carry over 300 titles each for the Spectrum, 
Commodore 64 and Amstrad. 



E HOW YOU SAVE WITH 
SOFTWARE BONUS PRICES 



Mitt 



Shadow ol the Un.com 14 96 11.46 O.W 

Elite 14 96 10.96 (4.00 

Fighting Wa.ru- 7 96 6 96 f? 00 

Spy* Spy 9 96 6 95 C3.00 

'ou Oli 9 96 6 96 f 3 00 

Frank Bruno'* Baiing 6 95 3 95 □ .<» 

Monty on the Run 796 6.96 (3.00 

Way ol rtm Eipluhng Fiu 9 96 6 95 d WO 

Critical Md» B 95 5 95 f 3 00 

St- quo*., 7 95 5 95 Q 00 

MmM Kanti 6 so 4 so n.oo 



Wlvinmf-.Wiri-.ii 796 546 O 50 

Mimry on Hie Run 9 35 6 96 0.00 

W«.ter Cirnrs 9 96 7 96 BM 

Way ol the Exploding Bsi 9'96 6 96 CJ 00 

Spy V Spy II 9.96 5 96 (4.01 

tin- 14 96 11 46 O 00 

AC( 10 95 7 95 O 00 



I.omJs ol Midiiiijiii 
3D Grand Ptii 
Battle of Bniam 
\" ■ . ■■ 
Match Day 
Souls of Dakton 



99b 
B 96 
995 
9.95 
8 9b 



695 
695 
795 
695 
6 4b 



n 00 
D.00 
f? DO 
O 00 

(7.50 
(3.00 




SIX MAGAZINES A YEAR 

A subscription of just £5.00 will bring you 
six magazines a year through the post. 
Each magazine is packed with reviews of 
all the latest software, reader's game play- 
ing tips, competitions to enter, our 
reviewer's personal choices and a summary 
of how the other magazines rate the new 
releases. 



HARDWARE AND UTILITIES 
SUPPLEMENT 

Every new subscriber to the magazine gets 
a 24-page review of some of the more 
popular utilities — such as word process- 
ing software — and hardware including 
joysticks and Spectrum interfaces. 



HOTLINE KEEPS YOU UP TO 
DATE 

Subscribers to the magazine can 'phone 
our 24 hour Hotline for up to the minute 
news of the latest releases. A three minute 
recording, updated weekly, details the new 
titles and their prices. Credit card holders 
may order by phone too 1 



EASY ORDERING - FAST 
SERVICE 

You can order from our substantial range 
as and when you like. There are no 
minimum order requirements — you don't 
have to buy anything at all. When you do 
order we do our best to despatch your 
goods within a week - often quicker. 




My computer is a: 



SUBSCRIPTION FORM VC 2/86 

Spectrum I I Spectrum ♦ 1 Amstrad ( I Commodore 64 /l 28 



I wish to subscribe to your magazine lor the next >2 months and take advantage ol the "Free Game" 
offer, for which I enclose C5 plus 75p post b packing lor the tree game. The game I would like is: 



I (Finders Keepers 1 iSpellbound I I The last V8 
(All machines ) (Spectrum only! IC-64 only) 



I iChiller I I Chequered Fktg 

(Amstrad only) (Spectrum Only) 

Nolo: II you would like lo order some ol the games shown in the panel above, list ihem on a separate 
piece ol paper and add the total cost to your payment 

value f 



I unclose a cheque/postal order no 

or 

please charge my Access/Visa Card No 

□□□□□□□□□□□□□□□□ 

I understand lhat if I am not lurly satisfied with Ihe goods, I may return them within fourteen days 
(or a lull rotund ol Ihe cost ol the games and I he Magazine subscription. 

Name (BLOCK CAPS! 

Address 



' Eaport Customer*: We welcome orders Irom all parts ol the world, please note the following 
subscription and postage rates outside UK : Europe Subscnplion C7.00. Post f?. U.S.A. and Mm 1 
die East - Subscnpbon f9, Post f3; Australia, Far East and South Alrica Subscription f 12.00, 
Post C4. Please note thai all Magazines are despatched by Air Mail postage lo keep you right up lo date 



MR. SOFTWARE LIMITED 
KELVIN HOUSE, TOTTERIDGE 
AVENUE, HIGH WYCOMBE, 
BUCKS HP13 6XG 
(0494) 450751 







LK Gibson introduces 



C64 users to IRQ 



interrupts. 



What is Multi-Tasking? 

THIS TERM IS USED TO DES- 
cribe a computer that can run 
more than one program at any 
given time, each program 
being transparent to the other. 
Output to the video monitor or 
TV screen is usually split so that 
windows are formed, each 
window being a miniature 
version of the normal screen 
for each program. This system 
of running programs concur- 
rently can either be produced 
by hardware or software. 

In the examples we are 
going to consider there are no 
windows and the ability to run 
two programs is derived purely 
from software. 

Unfortunately this opera- 
tion can only be performed in 
machine code, but don't 
despair. Basic programmers, 
the steps to have two programs 
up and running simultaneously 
are relatively simple and will be 
dealt with in as simple and 
concise a manner as possible. 

How it Works 



When an IRQ occurs your 
C64 must know where to find 
this block of housekeeping 
code. It finds an answer from 
memory locations 788 and 789 
(HEX $0314 & $315). The two 
numbers stored in these 
addresses form the INDIRECT 
starting address of the house- 
keeping code. 

You may have noticed 
something here. Memory 
locations 788 and 789 are 
situated in RAM and that 
means that the information 
stored there can be changed at 
will. So before the processor 
tells the computer to goand do 
the housekeeping we redirect 
it to do whatever we want it to 
do first. As you now know, IRQ 
occurs 50 times every second so 
we now have a program that 
runs 50 times every second 
irrespective of whatever else 
your computer may be doing at 
the time. This forms the basis 
for running at least two 
programs concurrently. Now 
we shall go on to consider in 
more technical terms exactly 
how this process is achieved. 

As slated earlier, memory 
addresses 788 and 789 contain 
the INDIRECT address for the 
start of the normal INTERRUPT 
CODE. Location 788 contains 
the low part of the INDIRECT 
ADDRESS and 789 forms the 
high part of the INDIRECT 
ADDRESS. This method of 
calculating INDIRECT ADD- 



This will give the start address 
as 59953 (SEA31). Write down 
this address as we need to jump 
to it at the end of our own 
custom routine, if this is not 
done the system will not scan 
the keyboard and the result will 
be a system crash. Therefore 
the last instruction in our code 
must be; 

IMP $EA31 

All of this will become quite 
clear later on so don't worry if 
you're slightly confused at the 
moment. The programs given 
later are presented in such a 
way that they can be used by 
the novice computer owner, 
but will also form the basis of 
some more advanced INTER- 



The way in which we make a 
program run apparently trans- 
parent to anything that might RESSES goes for any INDIRECT 
be running is by making use of 



the system's IRQ INTERRUPTS, 
this interrupt is called 50 limes 
every second (or once every 
jiffy). 

When an IRQ occurs your 
C64 stops whatever it is doing, 
whether it's a Basic or a 
machine code program and 
goes off to carry out its own 
little machine code program 
Remember, this happens so 
fast that it is transparent to the 
system. The machine code, 
executed during an IRQ, is 
simply a housekeeping routine 
and doesthingslike SCAN THE 

keyboard; upate the 

SYSTEM CLOCK etc. 



instruction in your program. 

This code is fairly standard 
for setting up any interrupt 
driven software, although 
some programmers may wish 
to carry out some initialisation 
for their program during this 
setting up procedure. The 
techniques for doing this will 
become apparent in later 
examples. 

The routine as it stands will 
be situated in memory 
addresses 49152 (HEX $C000), 
this is a 4K block of RAM sit- 
uated above the Basic INTER- 
PRETER. This is a convenient 
place away from the ravages of 
Basic, but almost any RAM 
location may be used providing 
you don't clash with Basic or 
the SYSTEM VARIABLES. Some 



Address 


Opcode Operand 


Comments 


scooo 


SE1 




disable interrupts 
while setting up 


SC001 


LDA 


#$20 


set low byte of start 






address for code 


$C003 


STA 


$0314 


store it at 788 decimal 


$C006 


LDA 


#$C0 


set high byte of 






address for code 


SC008 


STA 


$0315 


store it at 789 decimal 


SC008 


CLI 




allow interrupts again 


SCOOC 


RTS 




return to Basic 


$C020 






examples given later 




JMP 


$EA31 


jump to standard 
interrupt code 



ADDRESS used by your 
computer, i.e. LOW BYTE/HIGH 
BYTE. Therefore, to find an 
actual address, we can use the 
formula; 

AD=PEEK (x)+PEEK (x+1)*256 

Where * is the first location 
(LOW BYTE) and x+1 is the 
second location (HIGH BYTE), 
i.e. 788 and 789. 

Using this formula we can 
calculate the actual address of 
the standard INTERRUPT 
CODE with; 

AD=PEEK(788)+PEEK(789)*256: 
PRINTAD 



RUPT DRIVEN CODE for the 
more experienced amongst 
you. 

An example of this is to 
form windows using RASTER 
INTERRUPTS effectively 
splitting the screen using one 
half for one program and the 
second half for your interrupt 
code, unfortunately this is 
beyond the scope of this 
article. 

How to Set up 
Interrupts 



An ASSEMBLY 
program to set 



LANGUAGE 
INTERRUPTS 
would go as follows; 

$C020 is where your code 
begins and IMP $EA31 is the last 



useful locations are given 
below, although this list is by 
no means complete. 
$C00O(49152) to $CFFF(53347): 
This is the spare 4K RAM 
BLOCK situated above the 
Basic INTERPRETER. As it is split 
from the normal Basic RAM 
(2048-40959) it cannot be 
affected by Basic, therefore this 
is an ideal place for our 
INTERRUPT DRIVEN CODE. 
Basic RAM $800(2048) to 
$9FFF(40959): Code can be 
placed at the top of Basic RAM 
but unless it is protected it will 
be overwritten by Basic 
STRING VARIABLES. To 
protect this area we must lower 
the top of Basic and also lower 
the bottom of STRING 
STORAGE. The pointers to 



c 



6 



these are stored at 55-56 for 
TOP OF Basic and 51-52 for 
BOTTOM OF STRING STOR- 
AGE. To protect 256 BYTES for 
our interrupt code we would 
use the program line; 

10 POKE52,PEEK(52)-1:POKE 
56,PEEK(56>-1 

To increase this to 512 
BYTES of protected area we 
would substitute -2 for -1 in the 
above program line and so on 
for each 256 BYTES required. 

Line 10 as it stands will give 
us 256 protected BYTES from 
location 40704($9F01) to 
40959($9FFF) for our code. 
Cassette Buffer 828-1023: This is 
the cassette buffer and is totally 
safe for disk users but anything 
written there will be over- 
written by cassette LOAD and 
SAVE operations, therefore 
cassette users must be very 
careful when placing code in 
this area. 

From the above examples it 
can be seen that the easiest and 
most convenient addresses to 
place code are from 49152 
(SCO00) onwards, therefore all 
the examples given will use 
these addresses. 

Making it Work 

Each example that follows will 
be preceded by a description 
of the program and will outline 
its purpose, this will then be 
followed by a Basic program 
containing the necessary code 
in data statements (this will 
allow users without a machine 
code monitor to enter and run 
the programs given). Next will 
be given an assembly listing 
(for those amongst you with 
machine code monitors) and 
finally each example will be 
annotated to show you how it 
works. 

Fuzzy Border 

The following program is the 
shortest example that I could 
think of. Although it doesn't 
really serve any practical 
purpose it does give dramatic 
example of how INTERRUPT 
DRIVEN CODE works. When 
this program is complete you 
will see no difference to the 64 
screen but the exterior border 
will be flashing dramatically, 
and will continue to do so even 
while you enter or load and run 
other programs. 



Note that all these examples 
can be switched off by using 
the RUN/STOP and RESTORE 
keys together. 

Basic Program 1 

This is a complete Basic 
program and will automatically 
boot the code when run. Type 
it in exactly as shown, save it for 
security purposes and then run 
it and behold!. 

Disassembled Listing 1 (with 
machine code monitor) 



If you try to enter Basic code 
once a machine code program 
has loaded the chances are you 
will get an 'OUT OF MEMORY' 
error. There is a Basic BOOT 
program at the end of this 
article that will overcome this 
problem. 

Hopefully you have now 
entered and fully understood 
Program 1, if this is not the case 
then I would strongly 
recommend that you go back 
and read the preceding 
paragraphs, which should by 



$cooo 


SEI 


disable interrupts 


$C001 


LDA#$20 


load acc with low byte of 






indirect address 


$C003 


STA $0314 


store it in low byte of 1 RQ 






RAM vector 


$C006 


LDA#$C0 


load acc with with high 






byte of indirect address 


SC008 


STA $0315 


store it in high byte of 






IRQ RAM vector 


$C00B 


CLI 


enable interrupts again 


$C00C 


RTS 


return to Basic 


$C020 


LDX # $00 


set counter for screen 






colours 


$C022 


STX $D020 


store it in border colour 






address 


$C025 


DEX 


decrement colour 






counter (ie change the 






colour) 


$C026 


BNE $C022 


is it done 255 times 


$C028 


JMP $EA31 


if yes then jump to 






standard IRQ code 






before returning 



PROGRAM: BASIC PROGRAM 1 



5 REM BASIC PROGRAM 1 
10 FOR A=0 TO 12: READ NC 

:P0KE 49152*MC:NHT 
20 FOR A=0 TO 10: READ NC 

:P0KE 49l80A,HC:NEn 
30 SYS 49152 

40 DATA 120,169,32,141,20,3, 
169,192,141,21,3,88,96 

50 DATA 162,0,142,32,208,202, 

208,250,76,49,234,0 

60 PRINT'QK CODE NOW ACTIVE! 
1 1 • 



If you have machine code 
monitor then enter the above 
code as shown, again you must 
always SAVE code before 
executing it, this cannot be 
stressed enough. Switch your 
64 off and then on again, type 
LOAD'"YOUR PROGRAM 
NAME'M/I and hit RETURN. 
Once the code has completed 
loading type SYS 49152 to 
activate the code. 



now hold a lot more meaning. 

That introductory program 
wasn't too difficult was it, we'll 
move on to some more 
practical routines now, so sit 
down and prepare yourself to 
enter a fascinating sphere of 
computer programming. 

Using a Vic 1540 Disk 
Unit on the C64 

If you've seen that bargain 
secondhand Vic 1540 Disk 
Drive and had to pass it up 
because you thought you 
couldn't use it on your C64 
then this routine is for you. The 
1540 disk drive will operate 
exactly the same as the 1541 
when connected to a 64 apart 
from one major problem. It 
won't load programs without 
you first blanking out the 
screen and then opening it up 
again when loading is 
complete. This is very laborious 
and there are in fact two ways 
of overcoming this problem. 
1 Buy a new 1541 ROM chip 
from Commodore for £24 and 



try to fit it yourself, or pay a 
dealer to fit it at extra cost, or 
2 Use this routine! 

To use the program F1 
blanks the screen and F3 opens 
it up again, therefore to load a 
program use the following 
procedure; 

1 Type LOAD"YOUR PROG",8 

2 PRESS F1 and HIT RETURN 

3 Once the red 'disk in use' 
light has extinguished press F3 

It's as simple as that! 

By the way a more esoteric 
way of overcoming the 
problem is to blank and open 
the screen automatically using 
the RAM LOAD and SAVE 
vectors, but again that is 
beyond the scope of this 
article, sorry. 

Basic Program 2 

Remember to save program 2 
before you execute it! 

Once you have saved this 
program for getting it back in 
the computer and up and 
running are exactly the same as 
that for PROGRAM 1. 

If you're still with us and 
have at least partly understood 
the procedure involved for the 
programs above, then you 
should by now be starting to 
realise some of the weird and 
wonderful things that can be 
achieved with Interrupt Driven 
Code. 

We now come to our final 
program concerning interrupts 
and as you would expect it is 
also the most complex we have 
dealt with to date. 

Defined Function Keys 

This program gives us defined 
function keys, the keys are 
defined as follows: 
F1=Change border colour. This 
will step through each of the 15 
possible colours individually. 
F3=Change screen colour. This 
will step through each of the 15 
possible screen colours in- 
dividually. 

F5=Repeat keys toggle. This will 
toggle between all keys repeat 
and cursor keys only repeat. 
F7=Processor pacer. This allows 
Basic programs to be stopped 
in mid run and allows for easy 
de-bugging and also a freeze 
frame facility. Italso works with 
program listings to allow easier 
reading. Please note this 
should also work with most 



m/c programs providing: They This is by no means the most 

don't alter the Interrupt complex task that can be 

vectors, they don't occupy handled by Interrupts but 

memory from SC0O0 to appro* that's all for now, maybe more 

$C090, they don't disable some other time editor 

Interrupts. permitting! 



Basic Program 3 
(including initialisation) 

Always remember to save 



routines before running them 
as a crash can be fatal. To 
activate the above program just 
LOAD the RUN then enter 
5YS49152. 



Disassembled Listings 2 



$C00O SEI 
$C001 LDA #$20 



$C003 



SC006 



$C008 



SC020 
SC022 
SC024 
$C026 

$C029 
$C02B 
$C02E 

$C031 
$C033 

SC035 

$C038 
$C03A 

SC03D 



STA $0314 



LDA $C0 



STA $0315 



SC00B CLI 
$C00C RTS 



LDA $C5 
CMP #$04 
BNE$C031 
LDA $D011 

AND #$EF 
STA SD0H 
JMP $EA31 

CMP #$05 
BNE $C03D 

LDA $D011 

ORA #$10 
STA $D011 

JMP $EA31 



DISABLE 
INTERRUPTS 
LOAD ACC WITH 
LOW BYTE OF 
INDIRECT ADDRESS 
STORE IT IN LOW 
BYTE OF IRQ 
RAM VECTOR 
LOAD ACC WITH 
HIGH BYTE OF 
INDIRECT ADDRESS 
STORE IT IN HIGH 
BYTE OF IRQ 
IRQ RAM VECTOR 
ENABLE INTERRUPTS 
AGAIN 

RETURN TO BASIC 

GET THE LAST 
PRESSED 
IS IT THE Fl 
KEY 

IF NO THEN JUMP 
TO NEXT TEST 
LOAD ACC WITH 
VIDEO CHIP 
REGISTER DECIMAL 
53265 

CLEAR BIT 4 

ie set it to zero 

PUT IT BACK 

ie blank the screen 

GO DO STANDARD 

IRQ CODE BEFORE 

RETURNING 

IS IT THE 

F3 KEY 

NO THEN JUMP 
TO LAST 

INSTRUCTION IN 

ROUTINE 

GET VIDEO CHIP 

REGISTER DEC 

53265 

SET BIT 4 set bit 4 
to a 1 

PUT IT BACK IN THE 
REGISTER ie open upthe 
screen 

JUMP TO STANDARD 
IRQ CODE BEFORE 
RETURNING 



5 REM BASIC PROGRAM 2 
10 FOR A=0 TO 12: READ MC 

:P0KE 4?152+fi,HC:NEXT 
20 FOR A=0 TO 31: READ MC 

:P0KE 49184+A,HC:NEn 
30 SYS 49152 



40 DATA 120,169.32,141,20,3, 

169,192,141,21,3,88,96 
50 DATA 165,197,201,4,208,11, 

173,17.208,41.239 
60 DATA 141,17,208,76,49,234, 

201,5,208.8.173 
70 DATA 17,208,9,16,141,17, 

208,76,49,234 



Assembly Listing 
(Requires assembler 
to enter) 



10 M9152 

20 IRQVEC=788 

30IRQOUT=$EA31 

32 LDA #0 

33 STA 650 
35 SEI 

40 LDA #< JUMP 
50 STA IRQVEC 
60 LDA #>JUMP 
70 STA IRQVEC+1 
80 CLI 
90 RTS 

100 JUMP LDA 197 
110 CMP #64 
120 BEQ QUIT 
122 CMP #4 
124 BNE TEST2 

126 LDY 53280 

127 INY 

128 CPY #16 
130 BNE CONT1 
132 LDY #0 

134 CONT1 STY 53280 

135 JSR DEBO 

136 JSR TILOOP 
138 JMP QUIT 

140 TEST2 CMP #5 
142 BNE TEST3 

144 LDY 53281 

146 INY 
148 CPY W16 
150 BNE CONT2 
152 LDY #0 

154 CONT2 STY 53281 

155 JSR DEBO 

156 JSR TILOOP 
158 JMP QUIT 

160 TEST3 CMP #6 

161 BNE TEST4 

162 LDA 650 

163 EOR # 255 

164 STA 650 

166 JSR DEBO 
168 JSR TILOOP 
170 JMP QUIT 
180 TEST4 CMP #3 
182 BNE QUIT 

184 LDY #255 



START ADDRESS 

HI BYTE INTERRUPT VECTOR 

NORMAL IRQ VECTOR 

SET NO KEY REPEAT 
DISABLE INTERRUPTS 
SET NEW IRQ VECTORS 



ENABLE INTERRUPTS AGAIN 
RETURN TO BASIC 
READ LAST KEY PRESSED 
IS IT NO KEY 
NO KEY THEN RETURN 
IS IT F1 

NO THEN TEST FOR F2 
YES THEN GET CURRENT 
BORDER COLOUR 
ADD 1 TO IT 



RESET IF 15 

STORE NEW VALUE IN 
BORDER COLOUR ADDRESS 
SET UP KEY DEBOUNCEGOTO 
DO KEY DEBOUNCE 
JUMP TO END 
IS KEY F2 

NO THEN TEST SEE IF IT IS F3 
KEY 

YES THEN GET CURRENT 
SCREEN COLOUR 
ADD 1 TO IT 



RESET IF 15 

STORE IT BACK IN SCREEN 

COLOUR ADDRESS 

SEE ABOVE 

SEE ABOVE 

JUMP TO END 

IS IT F3 

IF NOT THEN SEE IF KEY IS F4 
GET CURRENT KEY REPEAT 
STATUS 

DO BINARY INVERT (IE 0 TO 

255 OR 255 TO 0) 

STORE IT BACK IN KEY REPEAT 

ADDRESS 

SEE ABOVE 

SEE ABOVE 

JUMP TO END 

IS KEY PRESSED F4 

NO THEN ALL FKEYS TRIED 

JUMP TO END 

SET UP MAX time FOR TIME 

LOOP 



CI G 



185 STY 253 






186 JSR TILOOP 




GOTO TIME WASTE 






SUBROUTINE 


300 QUIT JUMP i 


IRQOUTJUMP TO NORMAL IRQ 






INTERRUPT SUBROUTINE 


400 TILOOP LDY 253 


TIME WASTING LOOP 


410 LOOP1 LDX 


#255 




420 LOOP2 DEX 






421 NOP 




TIME WASTING NOP 






OPCODES 


422 NOP 




THESE CODES DO NOTHING 


423 NOP 




BUT WASTE TIME. BECAUSE 


424 NOP 




WE ARE WORKING IN VERY 


425 NOP 




FAST MACHINE CODE WE 


426 NOP 




NEED THEM TO MAKE UP 


427 NOP 




A REALISTIC TIME DELAY. 


428 NOP 






429 NOP 






430 BNE LOOP2 






440 DEY 






450 BNE LOOP1 






460 RTS 




RETURN FROM SUBROUTINE. 


500 DEBO LDY #50 


THIS SUBROUTINE SETS UP A 






SHORTER TIME DELAY 


510 STY 253 




TO ENSURE THAT THE KEYS 






DO NOT BOUNCE 


540 RTS 




RETURN FROM SUBROUTINE 



PROGRAM: 



10 1=49152 

20 READ A: IF A> 256 THEN END 
30 POKE I f AlI«Wl60Tfl 20 
49152 DATA 169,0,141,138,2, 

120,169,18 
49160 DATA 141,20,3,169,192, 

141,21,3 
49168 DATA 88.96,165,197,201, 

64.240,84 
49176 DATA 201,4,208,22,172, 

32,208,200 
49184 DATA 192,16,208,2,160, 

0,140,32 
49192 DATA 20B, 32,131,192, 32, 

111,192,76 
49200 DATA 108,192,201,5,208, 

22,172,33 
49208 DATA 208,200,192,16, 



208,2,160,0 
49216 DATA 140,33,208,32,131, 

192,32,111 
49224 DATA 192,76,108,192, 

201,6,208,17 
49232 DATA 173,138,2,73,255, 

141,138,2 
49240 DATA 32,131,192,32,111, 

192,76, 10B 
49248 DATA 192,201,3,208,7, 

160,255,132 
49256 DATA 253,32,112,192,76, 

49,234 

49264 DATA 164,253,162,255, 

202,234,234,234 
49272 DATA 234,234,234,234, 

234,234,208,244 
49280 DATA 136,208,239,96, 

160,50,132,253 
49288 DATA 96,256 



Please remember all of the 
above programs, especially the 
final one were not written with 
either speed or memory usage 
as their main criteria, but above 
all they were to be simple and 
concise making legibility 
easier. There are always various 
ways to solve most program- 
ming problems and the ones 
given were not necessarily the 
best solutions. 

All of the assembly listings 
where produced on Supersoft's 
Mtkro assembler cartridge on 
the C64. Some assemblers may 



use slightly different assembler 
command codes. Conversion 
to these assemblers should be 
little or no problem due to the 
fact that the assembly listings 
are fully annotated. Of course 
should you have the Mikro 
cartridge you should have no 
problems at all. 

Assembler Listing 
Loader Programs 

As was mentioned earlier, if the 
assembled versions of 



programs in this article are 
loaded using 

LOAD "PROGRAM NAME" ,8,1 

Then any attempt to load a 
Basic program will fail and give 
the Error OUT OF MEMORY. 
The best way to overcome this 
is by way of a small program 
called a BOOT PROGRAM an 
example of which is now given 
below; 

Tape Boot Program 

10 IF A THEN 30 

20 A=A+1:LOAD" INTERRUPT 

program",1,1 

30 SYS 49152:NEW (OR SEE 
NOTE BELOW) 

Disk Boot Program 

10 IF A THEN 130 

20 A=A+1:LOAD"INTERRUPT 

PROGRAM",8,1 

30 SYS 49152:NEW (OR SEE 

NOTE BELOW) 



PROGRAM: GEN BOOT 



i rem mtttnmtmtimu 
ttttttm 

3 REM USPC3JL.K. GIBSON 1983 

CSPCllJt 

4 rem miuttmmumm 

Mtttttu 

10 POKE 53280, 1:P0KE 53281,1 

:P0KE 646,6 
15 IF Z2=l THEN SYS H1*L1 
20 PRINT "[CLEAR] 

ENTER FILENAME" 

30 INPUT Zl$ 

31 PRINT: PRINT*SEARCHING FOR 

LOAD ADDRESS OK!" 

32 PRINT: PRINT-PROGRAM WILL 

AUT0B0OT ON LOAD C0HPLET 
E!" 

34 OPEN 1,8,3,21$ 

36 GET#1,L1« 

38 GETIl.HU 

40 Y1I=H1$:GQSUB 200 

:H1=X1I256 
42 Y1$=LU:G0SUB 200:L1=X1 
44 PRINT'tDO^VHl+Ll 

: CLOSE 1 
46 Z2=Z2+1:L0AD Zl$,8,l 
50 SYS Hi*Ll 

200 IF Y1$="THEN I1=0:RETURN 
210 X1=ASC!Y1$) 
220 RETURN 



Note 

Instead of NEW which will wipe 
out the Basic Loader and leave 
the Interrupt Code running, a 
Basic program (your Basic 
Program) could continue from 
here of which the Interrupt 
Program forms an integral part. 

Any of the programs that 
Load with 8,1 at the end (this 
is called a Relocated Load) will 
work using the above Boot 
programs. Remember the 
value for the SYS command 
may have to be altered to 
accommodate different code 
entry points. 



A Little Utility 

The program listed below is 
entirely in Basic and provides a 
useful facility. Should you ever 
come across a machine code 
program, whether it's one you 
have written yourself (and have 
forgotten the SYS entry point) 
or one written by somebody 
else, then this is for you. It can 
be LOADed using the 8,1 or the 
1,1 suffix but how do you know 
where it resides in memoryand 
what value do you use with the 
SYS command to activate it? 
Worry not, this program 
automatically Loads and Acti- 
vates almost any machine code 
Program. The only programs 
will not activate are ones where 
the code entry point is not at 
the actual beginning of the 
machine code Program. 
Although it will still tell you 
where the Program resides so 
you can use a Monitor to find 
that out for yourself. Try it out 
on the programs contained in 
this article, they will all work. 
The utility is listed below and is 
called General BOOTstrap. 



The Program 



We have now reached the end 
of this article, hopefully with a 
better understanding of how 
our computer works parti- 
cularly IRQ Interrupts. 

If you have found this 
article interesting or have any 
problems and you own a 
modem then please drop me a 
line on: 

COMPUNET:LKG82. 
SYSTEL: 533848507. 





YOU KNOW WHAT? IT'S BEEN A HELL OF 
a month! I topped my high score on 
Anticipital (shuddup! It's a good game, 
actually!), finally found a good chess 
game that doesn't bore the pants off me, 
and not only that I've got a stack of 
hints'n'tips that'll knock yer eyes off! 

'Cip it and See 

OK, here goes. Ancipital is not really a 
new game, I admit that. But it's certainly 
one of Jeffy Minter's best. I get a bit tired 
of most of his other stuff; the early 
out'n'out shooty ups are fine for a few 
moments, but quickly pall in the end. The 
experimental Mama Llama makes my 
wrist hurt, and I find it more than a little 
bit frustrating, having a Killdroid 
careering all over the screen totally out of 
conscious control. (P'raps you should use 
the Force? — Ed.) Very funny! 

Where was I? Oh, yes. Ancipital, or just 
plain 'Cippy to afficionados, is a true 
original. Four way gravity, a really off the 
wall objective, and a good slant on Jeff's 
alternative Universe. I like that. I think 
games which have a background story are 
more fun to play. You know, a little 
something to read before you power up 
the game, to get you into the feel of the 
story. That's where Elite scored very 
highly in my estimations, ana) that's in the 
little sci-fi book you get with the package. 
Come on, software houses! You're here 
to entertain us, so how about it. 

What's that? What's my hi-score on 
'Cippy? Nah, I'm too modest. Nah! 
Geddaway! Aw, alright, if you must know, 
it was 368,805. Pretty good, huh? 

Chess Mate 

I must tell you about this. . . Look. I'm not 
really known for being a chess player. 
Well, actually, I'm rubbish, but I do keep 
playing it, despite humiliating defeats to 




man and machine alike. I dunno, it's akin 
to the fatal fascination some folk have 
with car crashes. The best chess game I 've 
stumbled over recently, in my gluttony for 
defeat is Colosuss Chess 2.0. It's so easy to 
play; simply moving your pieces using the 
cursor, rather than the old long winded 
KP3-Kn4 kind of input you have to suffer 
in others I could mention. It's a delightful 
game, bringing back some of the peace 
and quiet of the real game. It beats the 
pants off me every time! 

Hint Me Daddio! 
(Eight to the Bar) 

Here are a few tips for your notepad. 
Stop me if you've heard any of them 
before. 

Jet Set Willy: This game drives me 
bonkers! I thought I'd seen the last of this 
on my monitor, but alas no; the game is 
back with new rooms, new challenges, 
and not a POKE in sight! Blast! I still can't 
leave it alone though. Shin up the rope in 
the Cold Store and you get into the Sewer 
System (poo!). Go all the way up the back 
stairs to Nomen Luni (Top Of Plane), skip 
across to On The Roof, Up On The Battle- 
ments and finally We Must Perform A 
Quirkafleeg. (OK, Matthew Smith. I know 
you read Furry Freak Brothers Comix!) 
Climb up the rope and you'll find yourself 
in the Watchtower. Get to the top, jump 
up. and you'll find yourself in the Rocket 
Room. Grab the gems at the top of the 
Rocket, and off you go, you're in the 
Space Station. Once on the Station, find 
your way to the Transporter, and you'll 



find yet another new system of rooms. 
There's also a guest appearance of a room 
from Manic Miner. ..good grief! 

Rockfords Riot - Boulderdash II: On 
the first screen you have to blast a hole 
through a wall by dropping a rock on a 
firefly. Then you must clear the earth 
under a wall, and then drop rocks onto it. 
The wall is Magic, and it will create a gem 
for every rock that passes through it! 
General tips: The amoebas will create 
gems if they are contained by rocks. Try 
snatching gems from the side 6f piles of 
rocks and examine the way the rocks fall. 
There's an interesting clue on how to get 
seemingly enclosed gems out by utilising 
creative snatching. (Sounds painful, but 
never mind!) 

More from Rockford next time. 

Raves from the Fave File 

My current favourite games are Ancipital 
(Llamasoft), for reasons previously 
specified: Bounty Bob Strikes Back (US 
Gold) still my bestest platform game, 
beating the pants off Willy, any day; 
Summer Games II (Epyx/CBS) if only for 
the fencing and the Kayaking; Rescue on 
Fractalus (Lucasfilm/Activision) one of 
the most state of the art arcade games in 
existence, and if Jeff endorses it, then so 
do I; Ball Blazer (Lucasfilm) probably the 
most dizzying 3D game out, fast and 
furious; Rupert and the Toymakers Party 
(Quicksilva) Ahhhhh! I nit sweet? And 
finally. Rock'n'Bolt (Activison), to my 
mind, the only new game from these boys 
worth a light. 

That's Yer Lot! 

OK, that's all in the Saga of Yellow Prindle 
Walks a Long Way Off and Conquers His 
Fear of Strange Fruit... we have time for 
this month. Next time we'll... well 
actually you'd better wait and see. cos I 
always spill the beans, and what thanks do 
I get? None. So off you go and write me a 
letter about your high scores. Go on! And 
don't turn to the next page until you've 
done it! 
Hurumph! 




/ 1 



.00. 




Yes Its true !!! 

For a limited period we are giving away a £5.00 
Travel Chek for spending money on your next 
holiday with EVERY £50 SPENT. 
Thats not all folks !!! 
your vouchers could also win you a FREE stay 
HOLIDAY for two or four people in our lucky 
numbers draw. 






U. a. . 



* Malt. 




°0 




Fan- f „ . 



9.99 



Computer Centres 

48 Junction Road, Archway, London N19 5RD 

01-263-9493/5 
238 Muswell Hill Broadway, London N10 3SH 
.01-883-3705 




.OS** 





INSTANT CREDIT 



INSTANT CREDIT" 



Terms 



All products are guaranteed for one year unless otherwise stated. Payment may be made by Access, Barclaycard, Bankers draft, Building Society cheque, 
cash or postal order. Sorry, cheques need f tve days for clearance. We reserve the nght to change prices without prior notice. All prices ere Inclusive of VAT 

Please check before ordering for carriage charges 



Stuart Cooke goes bonkers 
about Gremlin Graphics 
Bounder. 





x 




ma 




511 



***** 



vou 



K SI HIM 

MIM 



MO 



EVERY ONCE IN A WHILE A GAME AR- 
rives that you put in your disk drive, play 
for live minutes, think it isn't very good and 
put it away. Five minutes later you'll stick 
it back in the cassette recorder and 
suddenly find that it's three o'clock in the 
morning and you've been playing the 
game for hours. Well, Bounder is one of 
those games. 

Remember the game that you used to 
play when you were kids (or maybe you 
still do) where you can't step on any of the 
lines around the flagstones or the monster 
will gel you? Well. Bounder certainly 
owes a little of its background to this. 

You play the part of a bouncing tennis 
ball travelling aecross a scrolling path. 
Your way is hindered by a large number of 
pitfalls. Perhaps the main problem that 
you have to overcome is the fact that you 
can only land on the paving stones. If you 
miss then your tennis ball plummets to the 
ground a long way below you. I'm not 
quite sure why the path is floating above 
ground, but you can't knock the pro- 
grammer for a lack of artistic licence. 

Large gaps in the paving can be 
bounced across by means of the super 



bouncers. These are paving stones which 
have an arrow on them and give your ball 
thai extra power it needs to bridge the 

gap- 
Large walls block your path so you 

must guide your ball around them. In the 

meantime men on hangliders and floating 

logs are trying to stop your progress. 

If (or when) you manage to reach the 
end of a level you'll find the goal awaiting 
your ball. If you enter this then you'll find 
your score increasing. 

After each level you'll find yourself 
entering the bonus screen. This consists of 
a number of paving stones with question 
marks. Landing on a question mark 
increases your score. Be warned you only 
have a limited number of jumps in which 
to increase your score. Extremely boring 
but it certainly bumps up your points. 

Scattered around each of the levels 
you will find a number of mystery paving 
stones. These bare the same mark as those 
on the bonus level but will not always give 
you more points. If you are lucky then you 
will gain extra jumps for use on the bonus 
level, extra points or extra balls. If 
however you are unlucky you will find 



your ball being chomped to death by a 
mouth or even punctured by a flying dart. 

The hazards become more severe the 
further you get into the game. Missiles are 
launched from the sea, man (ball?) traps 
suddenly appear and burst your ball, a 
plethora of flying beastiesget in your way, 
even some of the paving stones disappear 
from beneath you. In fact it seems that 
everything is out to prevent you from 
reaching the goal and bonus level. 

A superb tune sets the atmosphere for 
your travels along the pathway. The 
graphics scroll excellently and your ball 
spins as though it has just left a tennis star's 
racquet. 

As a bonus an extra game, Metabolis, is 
being given away free with Bounder. 
Metabolis is a conversion of an earlier 
Spectrum game and offers very little 
difference from the original. 

You play the part of a little bird who is 
flying around a vast number of locations 
attempting to stay away from -the 
numerous baddies. Your aim in life is to 
collect a number of radioactive pieces 
scattered around in some extremely 
inconvenient places. 

Mapping the locations for this game is 
definitely a must as you will soon find 
yourself lost. 

Metabolis offers nothing out of the 
ordinary and probably wouldn't do too 
well as a stand alone game. However 
being included in a package with 
Bounder makes it an excellent purchase. 

Bounder is definitely one of those 'Just 
another Co' type of games and a must for 
any serious Commodore 64 collection. 
Especially when you remember that you 
are getting another game thrown in for 
the price of one. 



OR... MADE BY ALIEN 




THE FINAL CARTRIDGE 

THE FIRST OUTSIDE OPERATING SYSTEM FOR THE CBM 64 

This new operating system built in a cartridge does not use any 
memory and is always there. Compatible with 98% of all programs. 



Features: 

. DISK TURBO - 6 limes taster disk 
access - loadinq and saving 

• TAPE TURBO 10 limes (aster, even 
with files - normal Commodore com 
mands compatible with standard 
turbo's 

• ADVANCED CENTRONICS INTER- 
FACE compatible with all the well 
known Centronics printers and Commo 
dore printer programs Prints all the 
Commodore graphics and control 
codes (important lor listings) 

Advanced screen-dump facilities. 
Prints Low-Res. Hi-res and Multico- 
lour Full page!!! Even from games and 
paint-programs, like Doodle. Koala 
Pad etc. Searches automatically for 
the memory address of the piclure 

• 24K EXTRA RAM FOR BASIC-PRO- 
GRAMS AVAILABLE: Two new com 

mands ..Memory read". ..Memory wri 
te" They move 1 92 bytes with machi 
nelanguage- speed anywhere in the 
64K Ram of the CBM 64 Can be used 
with strings and variables 

■ BASIC 4.0 COMMANDS like Dload 
Dsave. Dappend. Catalog, etc. 

■ BASIC TOOLKIT with Auto. Renum 
unci Goto and Gosub). Find, Help. Old. 
etc 



PREPROGRAMMED FUNCTION 

KEYS: Run. Load. Save. Catalog. 
Disk commands. List (removes all list 
protections) 

KEYBORD EXTRA'S - Allows you toi 
delete part of a line: stop and conti- 
nues listings, move cursor to lower 
lefthand corner. Pokes and Syscalls in 
He* Typ command operates your prin- 
ter as a typewriter 
COMFORTABLE EXTENDED ML. 
MONITOR: with relocated load 
scrolling up and down Bankswitching. 
etc. 

RESET SWITCH: resets to monitor; 
resets with old, resets to Hi Res prin- 
ting; resets every protected program 

hope 



SPECIAL 
INTRODUCTORY 
PRICE 

FOR ONE VJfc FORI 

c 



PA FOR TWO <%■■ 

50.- c J7: 



each 



FOR THREE 
OR MORE 



each 



ON OFF SWITCH 

never need that one 



we 



you 



1 2 Months repta 
cement guarantee 



1 4 Days money 
hack guarantee 
if you are 
dissatisfied 



t :t )M» m i I r nt> 




U.K. ORDERS Barclays and Accescards~o7 
Cheques should he made out to 
H & P Computers. 'VCI 9 Hornbeamwalk 
Witham Essex CM8 2 SZ England. 
Telephone: 0376 511471. 



copv"i|ii .iiid MMMl u<iili>m,Mli HhP con.pt ( )cn Wolph.i.'iUlxw hi 236 

30H3 MV n.HlMrt-n. N.'Ilif?rl-n»l* IH 01031 '0731982 Mm M40t * Mtt ■) 



Part two of Daryl 
Bowers' machine code 
arcade game. 



IN THIS MONTH'S ARTICLE I 
am introducing the multi- 
purpose interrupt handling 
routine and the end of the 
routine 'INIT'. We havealso got 
some smooth scrolling and 
wrap-around! Can you bear 
the anticipation? 

If you look at the source 
code listing you will see lhat 
RESTORE1, RESTORE2 and 
TABMOV need to be changed, 
and lines 1540and 1550must be 
replaced with blank remark 
lines. Now on to heavy stuff! 

The first 40 lines are an 
addition to 'INIT'. The section 
to set up interrupts is the one 
with which we are mainly con- 
cerned. First, we disable 
interrupts with SEI. If we did 
not, and an interrupt occurred 
while we were changing the 
interrupt vector, the C64 would 
probably crash. 

Locations $0314 and $0315 
hold the two byte address of 
the interrupt handling routine. 
This normally points to $EA31 - 
where the KERNAL takes care 
of the keyboard input and 
various other 'events'. We shall 
replace this with the address of 
our own routine - 'HANDLE'. 
This is done in lines 3500 to 
3530. 

Next we enable Raster 
Interrupts - in other words, 
when the raster in the monitor 
reaches a certain point down 
the screen an interrupt will 
occur - lines 3540 to 3560. 

Locations $D011 and $D012 
hold the 'raster compare 
value*. If we place a value in 
these locations it is stored by 
the Vic chip. When the raster 
reaches that number of lines 
down the screen the Vic chip 
will cause an interrupt. $D012 
contains the low byte and bit 
zero of $D011 contains the high 
bits of this value. We set up the 
value of the first interrupt 
position in lines 3570 - 3610 to 
$00FF. 

Having changed all this we 
can now enable interrupts 
again - 'CLI' - and finally we 
shall turn off the keyboard - 
lines 3630-3650. We do this be- 
cause the depression of a key 
causes an interrupt when we 
don't want one - try removing 




330 RESTORE 1 


.BYTE 2 








340 restore: 


.BYTE 4 








B70 STflTl 


.BYTE ' METERS 


: 00000 LIVES : 3 




880 STAT2 


.BYTE ' SCORE 


: 00000 FOOD : 9? 




1540 


• 




.duo 


Akin Ml aa< 11(f) 

AND tZOOllllIl 


1550 


• 




tain 


STA »077o,T 










DEY 


3470 


;SET UP INTERRUPTS 






API i Ann i n 

BPL LOOP 18 


34B0 


1 




7 01 ft 


ATA 

RTS 


3490 


SEI 




jo jy 


■ 


3500 


LDA IHANDLE1255 




Sow 


I 


3510 


STA 10314 




7R7A 
tlD/V 


1 

i 


3520 


LDA IHANDLE/256 




3880 


iTUTCPBIIPT MAKini T 
. In 1 tKKUr i nnnuLino 


3530 


STA $0315 




3890 


i 


3540 


LDA SD01A 




3900 HANDLE 




3550 


0RA HI 




3910 


LDA IDOlT 


3560 • 


STA SD01A 




3920 


aun it 


3570 


LDA IDOU 




3930 


DMC (5ACTCP 


35B0 


AND 1127 




3940 


wnr »lmj i 




STA IDOU 




3950 RASTER 




3600 


LDA MFF 




3960 


STA $D019 


3610 


STA $0012 




3970 


LDA $D012 


3620 


CLI 




3980 


CUP RAST2 


3630 


LDA $DC0E 




3990 


BCC POSITION! 


3640 


- AND MFE 




4000 


CUP RAST2+1 


3650 


STA IDC0E 




4010 


BCC P0SITIQN2 


3660 


■ 




4020 


CUP RAST2+2 


3670 


!sET SCREEN SIZE 




4030 


BCC POSITIONS 


3680 


i 




4040 


CHP RAST2+3 


3690 


LDA ID016 




4050 


BCC POSIT I0N4 


3700 


AND 1255-8 




4060 


CHP RAST2+4 


3710 


STA $0016 




4070 


BCC P0SITI0N5 


3720 


> 




4080 


J HP P0SITI0N6 


3730 


Sprint status 




4090 


i 


3740 


i 




4100 




3750 


LDY 139 




4110 POSITION! 


LDX 10 


3760 L00P18 


LDA STATl.Y 




4120 


JHP ANYP0S 


3770 


and noon mi 




4130 




3780 


STA $0748, Y 




4140 P0SITI0N2 


LDX 11 


3790 


LDA STAT2,Y 









Games Programming 




4150 
1160 

4170 P0SITIDN3 
4180 
4190 

4200 P0SITIQN4 
4210 
4220 

4230 POSITIONS 
4240 
4250 

4260 POSITION* 
4270 

4280 ANYPQS 
4290 
4300 
4310 
4320 
4330 
4340 
4350 
4360 
4370 
4380 
4390 
4400 
4410 
4420 
4430 
4440 

4450 JUMP 
4460 

4470 FININT 

4480 

4490 

4500 

4510 

4520 

4530 

4540 SCROLL 1 
4550 RAST2 
4560 BQRD1 



LDX t3 
JHP ANYPOS 

LDX 14 
JMP ANYPOS 

i 

LDX 15 



LDA $0016 
AND 1248 
ORA SCR0LL1,X 
STA ID016 
LDA RAST2,X 
STA $D012 
LDA B0RD1, X 
STA ID020 
LDA backi.x 
STA $0021 
TXA 
ASL A 
TAX 

LDA TftBHOV, X 

STA JUNP*1 

LDA TfiBHOV+1, X 

STA JUHP+2 

JSR IFFFF 
■ 

PLA 
TAY 
PLA 
TAX 
PLA 
RTI 



4570 BACK1 


.BYTE 3,3,$0D t *0C,2,3 


4580 


• 

I 


4590 




4600 HQVE1 


RTS 


4610 




4620 M0VE2 


DEC SCROLL1+1 


4630 


DEC SCR0LL1+2 


4640 


LDX SCR0LL1+1 


4650 


BPL 0K2 


4660 


LDX #7 


4670 


STX SCR0LL1+1 


4680 


STX SCR0LL1+2 


4690 


LDY 11 


4700 L00P1O 




4710 


LOA *05E0,Y 


4720 


STA $05DF,Y 


4730 


INY 


4740 


CPY MAI 


4750 


BNE L00P10 


4760 


JSR PRBLDNG 


4770 0K2 


RTS 


47B0 


I 


4790 H0VE4 


DEC SCR0LLH3 


4800 


DEC SCR0LL1+3 


4810 


LDX SCROLL 1*3 


4820 


BPL 0K4 


4830 


LDX 17 


4B40 


STX SCR0LL1+3 


4850 


LDY il 


4860 L00P7 


LDA »06D0,Y 



.BYTE 
.BYTE 
.BYTE 



0,0,0,0, 
131,167, 
0,0,0,0. 



0,0 

182,211,251,91 
2,0 



these lines and see what 
happens! 

Lines 3690 to 3710 reduce 
the number of columns of 
characters on the screen to 38, 
by blanking out the first and 
last. This means that characters 
will smoothly scroll off the 
edges of the screen; again, try 
omitting them and watch the 
left hand side. 

The end of this routine 
simply places the data in lines 
870 and 880 on to the screen. 
Note the 'AND' statements. 
These are used because the 
assembler converts alpha- 
numerics in BYTE statements 
into their ASCII values. The C64 
screen, however, uses values 64 
less than the ASCII equivalent. 
These 'AND's, therefore, 
remove bits seven and six from 
the values - the equivalent of '- 
64'. 

Handling Interrupts 

The routine 'HANDLE', is 
designed to be totally portable, 
that is, you can use it in any 
program. Five tables are used: 
4540 SCROLL! : this contains 
the X smooth scroll value. 
4550 RAST2 : the Y positions 
where raster interrupts occur. 
4560 BORD1 : the border 
colour. 

4570 BACK1: the background 
colour. 

1430 TABMOV : the address of 
the scroll routine. 

I have allowed six interrupt 
positions - you can add more 
or use less - and it is easily 
possible to add more tables 
defining further effects; Y 
smooth scroll for instance. 

Now we know that if any 
interrupt occurs the processor 
will complete what it is doing 
and jump to 'HANDLE'. The 
first thing we must decide is 
whether the interrupt has been 
caused by our raster compare 
value or by some other source. 
This is done in lines 3910 to 
3950. When a raster interrupt 
occurs, bit zero of $D019 is set 
to one. If this is not set we jump 
to SEA 31 - the normal KERNAL 
routine. A 1 must be written 
back into $D019 to clear the 
register, ready for the next 
interrupt (a rather strange way 
to do it if you ask me!) in line 
3960. 

The next dozen lines check 
the value in SD012 (the current 
raster position) against our 
table of values, and branches to 



Games Programming 



4870 


STfl $06CF,Y 


5090 


LDY 11 


4880 


LDA tDADO, Y 


z:oo 


LDX 1064 


4890 


STft $0fiCF,Y 


51 :o LOOP? 




4900 


I NY 


m 4 ■ V 


-DA 1064. Y 


4910 


CPY M28 


5!30 


STA I063.Y 


4920 


BNE L00P7 


5140 


:ny 


4930 


JSR ROADFILL 


5150 


CPY 1121 


4940 QK4 


RTS 


5160 


BNE LOOP? 


4950 


i 


5170 


LDY 1104+39 


4960 NQVE5 


JSR NVFROG 


51B0 


STY 1104*7? 


4970 


JSR PRFR06 


5190 


LDY 1064+39 


49B0 


RTS 


5200 


STY 1064+79 


4990 


i 

J 


5210 


STX 1064+39 


5000 HQVE6 


DEC CLCDUNT 


5220 0K6 




5010 


BNE 0K6 


5230 


RTS 


5020 


LDfl CLSPEED 


5240 


• 
• 


5030 


STA CLCDUNT 


5250 PR9LDNG 


PTE 


5040 


DEC SCROLL 1+5 


5260 ROADFILL 


LDA I06DC 


5050 


LUX 5CR0LL1+S 


5270 


CTfl IflflfUJ ?7 
Q 1 n IV6JV '41 


5060 


BPL 0K6 


5280 


RTS 


5070 


LDX 17 


5290 FINISH 




5080 


STX SCR0LL1+5 


5300 


.END 




the appropriate 'POSITION'. 
At this point the value of X is set 
up ready to index into the 
tables. 



The routine ANYPOS is 
used for all positions, and sets 
up the X smooth scroll, next 
interrupt position, background 



and border colours and the 
address of the movement 
routine. The effect of this is to 
allow 'bands' of characters on 
the screen to scroll at different 
speeds, in different directions 
and with different colours. No 
mean feat! 

'FININT' simply restores the 
registers to their correct values 
and returns from the interrupt. 

The Scroll Routines 

Essentially, all the scroll 
routines from line 4620 to 5240 
are the same, so I will concen- 
trate on just one of them; 
'MOVE4*. 



The 'band' in area four (the 
road) will be moving from right 
to left at a rate of two pixels 
every interrupt (60th of a 
second). This is achieved in 
lines 4790 to 4800. If it were to 
move right we would 
INCrement the value in 
SCROLLH3'. 

Next we check to see if we 
have scrolled a whole character 
- lines 4810 and 4820. If the 
value has reached minus one 
we replace it with seven (lines 
4830 and 4840) and procede to 
scroll the characters eight 
pixels (one character) to the 
left - lines 4850 to 4920. 

'ROADFILL' is the routine 
which fills in the right-most 
character, in this case with the 
character which "falls' off the 
left. 

It will be seen that 
•MVFROC and 'PRFROG' have 
now been moved to the 
interrupt routine. This is to 
ensure that there is no flicker 
when the sprites are moved, 
since they are printed when the 
raster is below them. 



There's More 

When typing in the listing, 
change the symbols '&' and '/' 
to '< ' and '>' for example: 

LDA tt HANDLE & 255 becomes 
LDA # < HANDLE 

This is because my 
assembler insists on being 
awkward when it does a listing! 
'START' should now be at 
location $2335 (9013) 
'FINISH' should now be at 
location $2526 (9670) 

Next month we shall 
introduce the frog movement 
routines, and a joystick reading 
routine. 



^^^^^^ 


BINDERS 

FOR YOUR VALUABLE 
COLLECTION OF 
YOUR COMMODORE * £5 20 % 
MAGAZINES \ } 

"SMART EASY TO USE SEZ? 
"TOP QUALITY 




To ASP Rudtra Service, PO Box 35. Wolaey 
House. Wolsey Road, Hemel Hempstead, 
Herta HP2 4SS (0442-41221) 

Plaaia luppif ..four Commotion Blnd*r% CS.20 Inc. P*P 

Total I (PWim m»«B chwu« payable lo ASP ltd) 

Vmti RaquMad - 196 . . 1M . , It*. . .1M. . 




PIMM alio. 21 day* lortWhwy 



If an advertisement 
is wrong were here 
to put it right. 



If you see an advertisement in the press, in print, 
on posters or in the cinema which you find 
unacceptable, wnte to us at the address below. 



/ 



The Advertising Standards Authority. 

ASA Ltd. Dept 3 Brook HoUM, Tomngton Place London WC1E7HN 



Syntron's Digidrum is foot- 
tapping, hand-clapping good 



THE HEART OF A GOOD BAND IS THE 
ability of ihe rhylhm seclion to mark lime 
with the accuracy of a metronome and it is 
not surprising that microchip technology 
has developed the rhythm generator as 
the ultimate musical timepiece. The 
problem is that, unless you are willing to 
pay a small fortune, the current 
generation of machines has as much soul 
as the ticking of a clock. But this appears 
to be changing. 

Syntron's Digidrum is a flexible 
drumkit synthesiser which allows for 
those little touches of individuality which- 
normally differentiate the human from 
the machine. There is sufficient 
programming flexibility to allow changes 
in rhythm and variation in style and to 
convince the average listener that he is 
listening to a syndrum kit played by a 
human. 

The Digidrum package consists of a set 
of disks, containing (he composer 
software and instrument databases, and a 
cartridge which plugs into the user port of 
the C64. The cartridge has a standard jack 
output for connection to an external 
amplifier and a trigger output which can 
be used to keep several slave sequenced 
synthesisers in time to the beat. 

On loading the software, you already 
have a standard drum kit of seven 
instruments: base drum, snaredrum, 
three torn toms (large, small and floor), a 
crash cymbal and a hihat. These give a 
range of eight sounds in all because the 
hihat cymals are classed as two separate 
instruments whether open or closed. The 
sample programs give an opportunity to 
hear how the drumkit sounds and very 
impressive it is too, despite the slightly 
electronic sound. 



The composer program is in two 
sections. The first part allows you to 
compose short drum patterns and the 
second permits you to combine these 
patterns into complete backing tracks. 
There is no facility for printing out either 
the patterns or the songs so I found the 
best method was to switch from one 
section to the next and assemble the song 
from each pattern whilst the sound was 
fresh in my mind. 

The pattern composer will permit 51 
different patterns with a length of 38 
beats. This is an arbitrary figure because 
the tempo can be changed over 64 steps 
which gives a range from the very, very 
slow to the impossibly fast. The instruc- 
tions suggest that the mean value is 
around 44. The screen display looks like a 
familiar musical stave but there are eight 
lines instead of the normal five, each with 
a letter corresponding to one of the 
instruments. 

Tunes are entered by moving the 
arrow cursor along a tessalated vernier 
scale at the bottom of the screen until the 
correct position is reached. Then the 
letter key corresponding to the chosen 
instrument is pressed. The result is that a 
symbol appears on the relevant line and 
the instrument sound is heard. Aftera few 
notes have been entered, you can listen to 
the pattern simply by pressing a function 
key. 

The number of instruments which can 
be sounded at the same beat position is 
limited to three. A drummer only has two 
hands so the program makes it impossible 
for a snaredrum, torn torn and cymbal to 
be sounded at the same time but a 
snaredrum, cymbal and bass drum can. 
The flexibility of this system means that a 
respectable and plausible drum solo can 
be created using triols, syncopation or any 
other device or basic rhythm which takes 
your fancy. 

Each pattern does not have to be a full 
38 beats long it can be foreshortened by 
placing an end bar at any position along its 
length. 



Once a few patterns have been 
created they can be combined into a song 
using the second program. This is 
extremely simple to understand. The 
screen shows several columns which are 
tabulated in rows from one to 100. This is 
the maximum number of steps which a 
song can have but since each step can 
consist of the same pattern repeated 100 
times it doesn't take an Einstein to work 
out thai there is room enough for even 
the most ambitious project. 

Entry of a song is made by selecting the 
pattern number and the number of 
repeals which are then displayed on ihe 
song screen. The tune can then be played 
in full or part to see how it sounds and if 
necessary a patlern can be called up and 
trimmed until the fusion is complete. 

As in a word processor, there are 
several keys which allow the selection of 
blocks of the song which can be copied, 
deleted or inserted. Similarly patterns can 
be copied from one pattern position to 
another so that small changes can be 
made to create a new variation to add 
interest to the generated rhythm. 

There is room for 10 songs which use 
the same bank of patterns and these can 
be saved todisk for recall when necessary. 

In addition to the basic drum kit there 
is the option to replace any or all of the 
instruments with new ones which range 
from the hi-tech syndrum sounds to the 
more unusual percussion instruments 
such as a metal bar or even a very realistic 
hand clap. The limitation is still eight 
sounds and only three to a beat. 

In the studio it would be ideal for 
making demo tapes and the only 
complaint I have is the length of time 
taken to create the patterns. I did find this 
stage quite enjoyable, however, giving 
plenty of freedom to experiment. For live 
performance, Digidrum would only be 
practical if all the music used the same 
percussion set or the performance was 
organised to allow time for loading. 

Although there are limitations to live 
performances, I am quite sure that it 
won't be long before the strains of Sid 
Syntron's scintillating syncopation are 
heard in the local pub. 




'J >] >'■■ 




THERE ARE ALREADY DOZENS OF 
music packages available for the C64, all 
with their various strengths and 
weaknesses. Anyone who launches yet 
another package must think they have 
something pretty special. 

Even if your ears turn blue at the mere 
mention of a BBC computer, you may well 
have heard about Island Logic's The 
Music System which was hailed by music- 
minded users as the best thing since 
memory expansion boards. The develop 
ment team, System Software, has now 
produced a version of The Music System 
for the C64 and 128 and distribution has 
switched lo Firebird. 

As you might expect, the superiority of 
the SID chip immediately gives any 
Commodore music program a 
tremendous advantage over a simiar one 
on the Beeb. Not content with this. 
System Software has included a MIDI 
module which allows access to external 
synthesisers. 

The Music System (or TMS as it is 
usually referred to) was highly regarded 
not only for its music features but also for 
its use of icons and pull-down menus. The 
Commodore version can only enhance 
System's programming and design 
reputation as its use of these features are 
not only superbly implemented but they 
also make its operation relatively simple. 
And with six modules to choose from and 
over a hundred functions available from" 
the keyboard, it needs to be simple. Most 
keys perform the same functions in each 
module so it's nowhere as near so 
daunting a task as it may at first appear. A 
handy Quick Key Guide helps 
enormously and you'll find after a little 
use that the keys fall under your fingers 
quite naturally. 

Right! Let's take a look at the modules. 
These are the Editor, Keyboard, 
Synthesiser, MIDI, Printer and Linker 
whose icons are displayed on the main 
menu screen. Each module has a 
Command Line running across the top of 
the screen from which the pull-down 
windows. . .er. . .pull down. There are four 
menus here: Files, Values, Commands 
and Info and each is selected by pressing 
one of the function keys. The information 
given in the Command Line menusdiffers 
from module to module but is similar in 
type. 

Files controls the loading, saving, 
renaming and deletion of files and only 
those relevant to the module you are in 
can be accessed from that module. Values 
holds such information as key signature, 
tempo, octave, volume and voice 




number. Commands is generally 
concerned with instructions which affect 
the whole or large portions of the piece 
such as delete track and clear all tracks. It 
is also home for a set of macro commands 
such as settting markers, copying sections 
to the notepad (more of that in a 
moment), adjusting barlines, swapping 
and copying envelopes and filters, etc. 
Info displays general information about 
the state of your composition, for 
example note storage space and the 
names of current music and sound files. 

Moving on to specific modules, the 
one you are likely to use the most is the 
Editor. This displays a treble and bass clef 
in what is referred to as the Voice Monitor 
(VMW). Notes are entered here. The 
VMW only shows one voice at a time but 
you can flip from one to another at the 
press of a key and the bars are always 
aligned. 

Notes are moved up and down the 
staves to select pitch and the note name 
and octave is displayed in a small box on 
the top right of the screen. Each note can 
be assigned a different volume level and 
any one of 15 envelopes. The current bar 
number is shown and horizontal bars 
called barmeters indicate how much has 
been recorded on each voice. You can 
scroll through the score with ease and 
notes can be inserted and deleted at any 
point. A full range of accidentals can be 
used including double sharps and flats for 
the musical intelligentsia and notes can be 
turned into triplets and tied although no 



more than two notes can be tied together 
at once. 

The program will insert bar lines 
automatically if required and you can 
insert first and second time bars. Another 
feature of TMS is the ability to define loop 
sections. When played as part of a tune, a 
loop section will keep repeating until the 
whole tune has finished. Each voice can 
contain up to 20 different loop sections so 
you can quickly select one of a number of 
repeating bass or rhythm patterns to 
improvise over or for use in a tune. 

If all these features have your mouth 
watering and fingers itching it's only fair 
to warn you that we're only up to page 25 
of the manual. There is lots more to come. 

From the Commands menu you can 
call up a set of macro commands. These 
operate upon a section of a voice which 
has previously been marked with ""two 
markers. Macro commands include trans- 
position and envelope and volume 
assignment. 

Yet another feature is the Notepad. 
This is used to store a section of a voice 
which can be moved to another part of 
the same voice or a different one. It can 
also be used to merge two music files 
together and notepad files can be saved 
and loaded like any other although only 
one can be held in memory a( a time. 

If you prefer to tap out tunes on the 
Commodore's keys, enter the Keyboard 
module. Real-time note entry from 
QWERTY keys is not the easiest way of 
writing a tune but the Keyboard module 



Music Review 









B □ □ P 

□ □ a a 



Iter UP 
Cop* »n»*l«P» 

copy 

Zmro enwPloP* 




j e i-i m 




helps lo make a difficult job as easy as it 
can be. Three voices are entered 
monophonically with horizontal bar- 
meters to show you how much room is 
available for each voice and the VMW can 
be called to display the notes. The 
Keyboard is entered in practice mode, or 
Tinkle as it is called in the manual. Music 
and Sound files can be loaded although 
only music files can be saved from here. 
The manual is kind enough to explain that 
anything but simple tunes may produce 
untidy compositions - and it's right - but 
then the Editor module includes a Block 
Tidy command to help put right the mess 
you make. 

The Synthesiser module is where you 
come to grips with SID. It must be the 
most complete and sophisticated SID chip 
editor yet devised. Graphic displays give a 
visual indication of SID's parameters and 
you can load and play a music file to hear 
the effect of the envelope as you alter it 
on a proper tune. The envelope includes 
waveform and filter selection and you can 
name each creation for easy reference. 

The Synthesiser includes extra 
facilities like sweeping the pulse width, 
pitch and filter without using another 
voice - an extra bit of magic. 

The MIDI module will be attractive to 
a lot of users but let us not forget that a 
MIDI interface is also required. The 
program supports the SIEL (£79) and the 
Passport (£110) interlaces and although it 
may work with others this is not 
guaranteed. Although the concept of 



MIDI was to produce a standard set of 
digital information signals, the standards 
haven't yet filtered down to MIDI inter- 
face manufacturers. 

This module is basically a six-track 
polyphonic real-time sequencer. It 
records most performance information 
but not pitch-bend which cuts off any 
following data. I wonder how thisgot past 
the debugging team. You can set the 
tempo, select and delete individual tracks 
and pause recording by pressing the 
space bar. There are no channel assign- 
ment or editing facilities but it is a rather 
excellent extra and TMS is not, after all. a 
dedicated MIDI program. Abigplusisthe 
ability to convert MIDI files to music files 
playable by SID and vice versa. 
Regrettable' but rather obviously, any 
mutli-part polyphonic pieces are con- 
verted into three monophonic lines. 
Performance data goes but voice 
numbers in the range one to 15 are 
converted to envelope numbers. You can 
use the MIDI module for real-time input 
and tidy up the parts later in the Editor. 

The Printer module supports Epsom 
and Commodore printers and you can 
add lyrics to the score, too, providing a 
convenient copy of your masterpiece. 

Finally, the Linker module is used to 
link individual music files. It is the only 
way tempo, key and time signature 
changes can be implemented in a single 
piece and, of course, it allows mammoth 
compositions to play through in total. Up 
to 26 files can be loaded, memory 



permitting, and arranged to play back in a 
sequence which can contain up to 99 
items. The whole arrangement can then 
be saved as one file for convenient 
reloading and playing although you can't 
play this back through the MIDI module. 

The 94 page manual is well-produced, 
well-written, easy to read, full of 
illustrations and a comprehensive index 
will lead you to virtually every occurrence 
of every aspect of TMS. Umpteen demo 
tunes are supplied on the disk with even 
more on the other side (a bit naughty, 
these reversible disks, aren't they?). 

You may have guessed by now, but if 
you haven't, here it is: TMS is the ultimate 
Commodore music editor for the SID 
chip. The MIDI module is a bonus 
although musicians with serious MIDI 
requirements will need a dedicated 
software package. TMS is easy to use in 
spite of its wealth of features and it's fun. If 
you are at all interested in making music 
with your Commodore, I can not 
recommend it too highly. 

The Advanced version of TMS 
containing all the modules described 
above retails for £39.95 and is available 
only on disk. A smaller version containing 
only the Editor, Keyboard and Synthesiser 
modules sells for £17.95 on disk and £14.95 
on cassette. What will System produce for 
the Amiga? 

The Music System is available from: 
Firebird Software, Wellington House, 
Upper St Martin's Lane, London, WC2H 
9DL. 



ACTION REPLAY 1 S* 



Yak's Progress 

Llamatoll £11.50 disk £9.45 cassette C64 * Joystick 



10 J_ 8 fi~ 8 i_ 10 



Mcxr zone ea km 



tlraiiiifvilfcfit 




JEFF MINTER HAS BEEN games is available under the 

around since Vic was just a lad title of Yak's progress. 

and now a collection of Minter As a document of one man's 



The Last V8 

Mastertronic Mad Series £2.99 C64 




"V8 RETURN TO BASE as you try to get home before a 

immediately" crackles the delayed attack nucleur 

voice in your headset and warhead wipes you off the face 

you're off in a race against time of the earth. 



Blackwyche 

Ultimate £9.95 C64 ♦ Joystick 



[■III 111111111 lllllllll lilt 

WA ■■■■ , iliuiii Iiiimiii , ■■> 

sJm lam (■■■■■■■i 1 



fight to tame a machine, this 
compendium is fascinating and 
allows the newer C64 owners to 
catch up on some of the best 
and most unusual zapping 
games to be devised for the 
machine. 

Eight games for the price of 
one is an offer that few will 
refuse and for many it will 
provide the chance to get 
turbo versions of games al- 
ready in their collections as 
well as filling up any gaps. 

Attack of the Mutant 
Camels and Revenge are both 
here alongside Matrix, Laser 
Zone. Sheep in Space, Meta- 
galactic Llamas, Ancipital and 
Hover Bower. 



MUCH HAS ALREADY BEEN 
said about the C64 answer to 
the Marie Celeste, the bad ship 
Blackwyche. In my opinion a 



lot of this was pure hype. It isan 
adventure style game and has 
little to commend it over many 
similar offerings. 



There are enough camels to 
give you the hump, sheep to 
drive you baa-rmy and llamas 
to drive you bananas. The 
graphics vary as Minter's pro- 
gramming skills develop and 
the accompanying booklet 
gives the lowdown on the 
workings of the programmer's 
fevered brain. 

To try to describe the games 
would probably take most of 
the review space in this issue 
because the games are unlike 
anything to be seen elsewhere. 
Imaginative and demanding, 
they are not everyone's cup of 
tea but the Minter following is 
by no means a minority 
movement. E.D. 



. 6 -L 8 S'- 



m 



As a scientist working on 
project V8, you were hidden 
deep underground at the time 
of the holocaust. You have now 
been allowed to try and make 
contact with the survivors. 

The screen is divided into 
two windows. The bottom 
depicts your instrument panel 
whilst the top gives a birds-eye 
view of you and your 
surroundings. The dials you 
have to watch are fairly simple - 
they include speed, distance to 
base and time before the 
explosion. You will, however, 
have to keep your eyes firmly 
on the road. 

Providing you stay on the 
road, all well and good but you 



soon discover that you cannot 
take corners at 410kph. One 
crash and that's it - game over. 

If you slow down to take 
corners, there is no time for 
you to return to base before 
the bomb detonates. Event- 
ually, I realised that some of the 
trees I kept hitting could, with 
slightly better driving, be 
avoided 

Strangely, the speech adds 
little to the game's atmosphere 
but the rest is extremely 
addictive. The car is very 
responsive and the music is 
great. You don't have to be a 
racing fan to enjoy this one. 

C.H. 



. 6 J_ 7 5" 7 1 7 



Starting on the upper decks 
you are immediately harried by 
winged demons and the 
occasional flying octopus! 
Unarmed and helpless, your 
first task is to examine the 
cabins to find a sword guarded 
by two nasty skeletons. 
Attacking from both sides, they 
beat you with bony fingers, 
knocking down your energy 
level as they do so. You must 
find dubloons to replete your 
power. 

Once you have the sword 
you can attack the flying 
menaces outside but it is 
ineffective against most of the 
ghouls in the other cabins. 



Occasionally you will get a 
surprise as you enter a cabin, 
the floor gives way and you end 
up dazed on a lower deck. 
Ladders lead up and in this way 
you can tour the whole ship 
making discoveries but no 
friends. 

The locations are numerous 
but the graphics are very 
repetitive. Only colours differ- 
entiate which deck you are on. 
There is some suitably nautical 
music over the opening screen 
but during play there are only 
the sound effects which are 
fairly unimaginative. 

E.D. 



» ACTION REPLAY ^ 1^4 



Dynamite Dan 5 f 7 fi* 7 i 6 

Mirrorsofl £7.95 CM ^ 9 B - „ 




ARRIVING BY ZEPPELIN AT 
!he hideou! of Doctor Blitzen is 
not the subtlest approach 
Dynamite Dan could have 



made. With the assistance of his 
henchwoman, Donna, the 
doctor has set into operation a 
multitude of defence systems 



and it is up to nimble-footed 
Dan to avoid these obstacles, 
steal the plans for the super 
psychron mega-ray which 
Donna and Blitzen have 
secreted in the safe, and make 
his escape. 

This is a new platform game 
from Mirrorsofl and it is 
fiendishly difficult. As you 
guide Dan around the house 
looking for the eight sticks of 
dynamite needed to blow the 
safe, all manner of creatures 
have to be avoided while 
keeping an eye on your energy 
level. Food is found at regular 
intervals which will boost both 
Dan's energy and your score 
depending on the type of food 
found. 



There are other objects 
which score points but the 
most valuable are the lesi 
tubes. The score for this 
discovery is a miserable 25 
points but they do give Dan an 
extra life which is absolutely 
essential for success. 

At the bottom of the house 
is a river and Dan displays what 
is quaintly referred to as 
'negative buoyancy' - he can't 
swim. This is the most 
dangerous of all the game's 
elements because one dip in 
the water and all Dan's lives are 
lost. 

The game will challenge any 
platform fanatic with a 
yearning for explosive fun. 

E.D. 



Hero of the Golden Talisman 

Mastertronic Mad Range £2.99 CM 




MISSING MY FIRST JUMP IN 
Golden Talisman, I was more 
than a trifle surprised to find 
myself floundering under 



have realised that a fair propor- 
tion of this arcade adventure is 
of a subaquatic nature. 

In order to find the five 
pieces of the talisman, you 
must manipulate candles, keys, 
ropes and spells as you make 
your way through the various 
tunnels. Assorted monsters 
including particularly vicious 
fire breathing dragons are 
intent on stopping you. You 
can carry up to five items at 
once, the lefihand box 
showing the one currently in 
use. Also shown on the screen 
water being chased by a shoal is a stylised map of where you 
of ferocious looking piranha, have been, indicators of your 
As usual, I had not read the strength remaining, oxygen 
instructions, otherwise I would carried and a large map of 



immediate surroundings. Your 
strength and oxygen supplies 
can be increased by collecting 
fruit and bags of air that appear 
periodically. 

Movement is straight- 
forward, the only tricky bits 
being the jumps which involve 
the diagonals on the joystick. 
There is no scrolling between 
ihem so you are never sure 
what you will find on the next 
one. The graphics are large and 
blocky with some of the 
movement being jerky. 

This game has some original 
ideas but they don't quite get 
together and the overall 
impression is uninspiring. 

G.H. 



Fighting Warrior 

Melbourne House £9.95 cassette £14.95 disk C64 



L s 5" 



6 c 5 





LIVES: 2 



AS PRINCESSES EVERYWHERE 
are wont to do, yours has 
managed to go and get herself 
kidnapped and you set off to 



rescue her. The setting is 
ancient Egypt and in order to 
achieve your quest, you have to 
battle against assorted 



creatures such as humans with 
jackal heads and winged 
demons. 

Both you and your 
opponent try to hack each 
other to bits with swords. The 
amount of damage you can 
sustain is depicted by a number 
of arrows at the bottom of the 
screen and a successful strike 
reduces this total by one. When 
it reaches zero, your adversary 
dies or you lose one of your five 
lives. 

Combat itself gives you a 
choice of three aggressive and 
four defensive manoeuvres. 
You can aim a high, medium or 
low blow and can jump, duck 



and move forwards and 
backwards. In practice, the 
battles tend to degenerate into 
a slogging match with both 
sides standing still and trading 
blows. After the combat, you 
get the chance to take a swipe 
at the magic vase that appears. 
This may increase or decrease 
your strength, take you to 
another zone or force a battle 
with a god. 

Fighting Warrior lacks any 
lasting appeal. Every battle is 
much the same as the last and 
there is only a limited range of 
movements available. 

There are better combat 
games on the market. G.H. 



'ACTION REP LA Y JL JL S - db 

^T^*^^ I^^HV 1 * 1 *~ ' Or.q.n*l.lv Ptayabilily G.«ph.c-> Value f ot 

Mon«v 



Journey 

CRl £8.95 CM * Joystick 



* 5 I s B^ 3 ^L 3 




KEEP YOUR HANDS FREE AND 
hold on to the sides of the 
vertical shafts as you climb 
down otherwise you could 



come to a disastrous end. 

The adventurer must collect 
11 treasures from the centre of 
the earth and bring them to the 



Thunder birds 

Firebird - Super Silver Range £3.95 




V 




00 0+ -40 



1 ^^^^^^^^^y I . . .... ^ 



A TEAM OF ARCHAEOLOGISTS 
have got themselves trapped in 
an Egyptian tomb. They send 
out a mayday distress signal 



Quest for the Holy Grail 

Mastertronic £1.99 CM 



which is picked up by Inter- 
national Rescue. Thunderbirds 
are go. 

You control both Thunder- 




"MONTY PYTHON WITH 
chips" reads the inlay. This 
supposedly wacky adventure 
game should be served with 



large dollops of green slime. 
Bearing a striking resemblance 
to Scott Adams' original adven- 
ture games of yesteryear, this 



surface. Dragons, magnetic 
fields, dynamite, detonators 
etc. hinder your search for the 
treasures. The player can 
escape from the vampires by 
climbing up or down a shaft. 
There are guns which can be 
used to kill deadly vampire bats 
and oxygen pills which can be 
taken when you enter a gas 
chamber. To pick something 
up you must stand over it and 
push up on the joystick. If you 
get too heavy you can drop 
something by pushing down 
on the joystick. 

This is yet another arcade 
strategy game of the 
Dungeons and Dragons ilk. The 
special effects show you 
somersaulting to your death 



and those used in the trans- 
porters are original and good. 
There are two speed levels, fast 
and normal. The documenta- 
tion is adequate and full 
playing instructions can be 
found on the back of the cover. 
The player has three lives and 
starts each time at the surface. 
There are different levels of 
skill the first one being that of a 
brainless snail. 

At first I was continually 
having to start over again after 
somersaulting to my death. I 
found the trick is to hold on to 
the sides as you climb down. I 
recommend this challenging 
game to anyone who wants a 
few hours of fun. 

IX 



0s 



9 & B 



birds 1 and 2 (the fire button 
toggles control between them) 
and you have to find your way 
through a maze of passageways 
inside the tomb. As in all the 
best tombs though, it contains 
a huge number of traps. These 
come in two forms - huge 
stones that block the passage- 
ways and guardians such as 
mummies and spiders that try 
to stop you. 

The main problem is the 
blocks. These are of three 
types. TBI can only move blue 
blocks. TB2 green blocks and 
both can shift yellow blocks. 
The maze has been very 
ingeniously designed and it 
requires considerable planning 
to get through. Frequently, you 



think you have solved a 
problem only to find that one 
of your craft is blocked in. To 
get to the correct position to 
shift certain blocks, one of the 
TBs is quite likely to have to 
detour through three or four 
other chambers first. 

TB2 can carry certain equip- 
ment and a menu lets you 
choose what to lake. These 
items may help you in a later 
stage of the game but you have 
to find out how and where. 
Extra fuel is a must. 

Thunderbirds, although not 
graphically brilliant, is an excel- 
lent game which is guaranteed 
to keep your grey cells ticking 
over. FAB Virgil. 

C.R.H. 



1 Jjfc*±* 



game tries to improve on them 
by using graphics, but not to 
any success. 

Sir Tappin is on a quest to 
find the Holy Grail. The game 
starts off in a Forge where the 
player meets a CND nut with a 
nuclear powered lamp and a 
key. He is able to go west, east, 
north, south, up or down. 
When Sir Tappin has been 
squashed by a falling tree or 
drowned by flying snot or has 
befallen some other tragedy he 
restarts his quest in the forge 
again. 

This value for money game 
offers the enthusiast on a tight 
budget many hours of 



exasperating fun and a large 
vocabulary of four letter words. 
The writers have left all clues, 
instructions and commands of 
how to play to the players 
imagination or previous 
experience. Using 'Help' yields 
"Yes. you'll need it", "No, I'm 
sulking" or just plain "No!". 
There are a few original results 
for some commands - try 'quit' 
for instance or use 'drop' and 
suffer the consequences once 
you are carrying the nucleur 
powered lamp! I found the 
language rude andpuerile, and 
do not recommend it to any- 
one who wantsachallenging 
and exciting game to play. J.L 



. ACTION P ^ P L A Y 5 i E I) 

JI^^^J M 1 * 1 ' *— 0rt 9 tnaltt V Pl-yabihlv Graphic* ValuaFo* 



SkoolD-ze ^ 9 | 8 | 7L 



Microsphere £6.95 C64 





CONVERSIONS FROM SPEC- 
trum to C64 often disappoint 
me bul the plot of Skool Daze is 
so good that even the jerky 
scrolling action does not 



detract from the enjoyment. 

It tells a tale with which 
everyone is familiar, the panic 
just before the school reports 
arc issued. And it is a matter of 




Willow Pattern 

Firebird £3.95 




>! 

5 I 

am 



life and death to steal your 
report before the Headmaster 

sees it. 

The hero is called Eric, a 
good name for a hero if ever I 
heard one, and he must obtain 
the secret combination of the 
schoolmasters' safe if he is to 
save his reputation. If the boy's 
name does not appeal to you, 
the names of the main 
characters can be changed at 
the start of play. 

Like all schoolboys, Eric has 
lessons to attend and if he is 
caught wandering about 
during lesson time, or messing 
about generally, he will be 
given lines by passing teachers. 
If he is clever he will make sure 
that someone else is closer to 
the teacher when misbehaving 
because the blame generally 
falls on the nearest boy. If Eric 
amasses more than 10,000 lines 
he is immediately expelled and 
the game starts again. 

To find the combination, 
Eric must jump up and hit all of 
the shields which are hanging 
on the walls around the school. 
Some of the shields are too 
high for a mere schoolboy to 
reach so violent measures are 
called for in desperate circum- 
stances. This may involve 
knocking down a fellow pupil 
or a schoolmaster and using 
them to give the necessary 
height to reach the shield. 

When all of the shields have 
been set in motion, Eric must 
knock down each teacher in 



turn to reveal a single letter of 
the combination. Unfortu- 
nately, the dithering old 
History teacher can only 
remember his if he sees his own 
date of birth written on the 
blackboard. Clues are given to 
the date during the game but if 
you guess wrong the nasty little 
swot of the class will split on 
you for writing on the board. 

Once Eric knows the com- 
bination he must rearrange the 
letters into the correct order, 
he only knows that the 
headmaster's come first. The 
guess is written on a clean 
blackboard and then he must 
rush to the staffroom, jump up 
in front of the safe but if it 
doesn't open he must go and 
guess again. 

Recovery of the report does 
not end the game because the 
shields must be hit again to stop 
them flashing. Skillful use of a 
catapult can always help with 
hitting the shields but this does 
run the danger of getting lines. 

The screen is a hive of ac- 
tivity but it's a pity that more 
was not made of the 64's capa- 
bilities. A touch of blatant 
sexism creeps in with all of the 
characters being male but in 
the tradition of Tom Brown's 
Schooldays and Billy Bunter I 
shall overlook this and not put 
Microsphere in detention. 

The old saw about these 
being the happiest days of your 
life is laid bare by this, the most 
traumatic, game of your life. 

E.D. 



6 §7 



MOST PEOPLE WILL AT SOME design on them. The design 
stage have eaten a meal off represents an ancient Chinese 
plates with the willow pattern fairy tale and Firebird's latest you can entice a guard to throw 



game is an arcade adventure 
based on that story. 

You play a mere clerk who is 
in love with a princess. The 
trouble is, she is promised to a 
merchant so you decide to 
break into her palace and 
rescue her. To do that, you 
must find your way through a 
nwe, find certain objects, 
overcome the palace guards 
and then escape to a boat. 

In order to defeat a guard, 
you must throw a sword at him 
before he throws one at you. 
You can only carry one sword 
at a time and so you will have to 
backtrack a lot. Extra swords 
can be found lying about or 



one and then dodge out of the 
way. 

Occasionally, you have to 
cross a bridge which you do by 
leaping from stepping stone to 
stone. It's not quite that easy as 
three giants try their hardest to 
knock you over and so timing 
your leaps becomes crucial. 

The graphics in Willow 
Pattern are exquisite with 
pictures of Chinese temples, 
bridges and trees. My first 
impression on playing it was 
that it was a Sabre Wulf look-a- 
like but the way that the game 
plays makes it totally different. 
At £3.95 it is excellent value for 
money. 

G.R.H. 



ACTION R e p l a y0 X E ± 

^ Mon«y 



Space Hunter 

Mastertronic £1.99 C64 * Joystick 




6 /*\5 




UIFH_ 

run: 



. mm 



THE RED ALERT FLASHES AND 
you prepare to defend yourself 
agains! the waves of fighters 
that threaten to destroy vou 



As a last desperate attempt to 
save the Earth you, a Rookie 
pilot, have been sent to capture 
the food transporters before 
the aliens. 

The position of the target 
ship, which can be changed by 
the player, is indicated by a 
flashing dot on the radar. Use 
the warp drive or forward 
thrust to speed you to the 
target ship, as loitering brings 
hordes of horrible fighters. 
Once close enough, an 
approach speed of one or two 
will automatically teleport you 
The inhabitants of Earth are into the ship. Now with the aid 
starving and none of the space of a jet pack you can start your 
fleet pilots have returned from search for extra 'warp drives', 
their mission in search of food, flashing food units, more fuel 




,— SIMlltl— 

[eeeie-1 1 j 1 — 




Chimera 

Firebird - Super Silver Range £3.95 



and shields. Beware of the 
ricochetting creatures which 
will deplete your energy and 
kill you if you collide with 
them. Once you have collected 
all you can, exit and find the 
next target ship. 

For a cheap game styled on 
Elite this is not at all bad. To 
progress through the 11 ranks 
from Rookie to Space Hunter 
will not take an experienced 
Elite-ist too long. The docu- 
mentation, as in many Master- 
tronic games is not very 
comprehensive. The graphics 
are realistic and the music is 
pleasantly relaxing after your 
ordeal with the fighters. 

J-L 



7 r%\7 




Y 



THAT THE CRAFT ORBITING 
the earth is hostile is unde- 
niable. It also appears that 
someone is going to have to 



Friday the 13th 

Domark £8.95 C64 + Joystick 




find out how much of a threat it 
represents and if possible 
destroy it. if you escape with 
your life, so much the betterl 




SCORE : 0000000 UEAPDN : 

*M It M I 

211 fill? 



FRIDAY THE 13TH IS BASED 
on the scythe-fi movie of the 
same name. It is a tale of twisted 
revenge as homicidal maniac 



hi 



Jason tries ' to avenge 
mother's murder. 

His wrath is turned against 
the innocent holiday makers 



As the airlock shuts behind 
you, you look around and see 
that you are in a large chamber 
with exits left and right and an 
exit in front of you blocked by 
what appears to be a giant 
microchip. The rooms are 
depicted in 3D block graphics, 
reminiscent of Ultimate's Alien 
8 and Knightlore for the 
Spectrum. The effect works 
well. 

Destruction of the ship 
requires a four stage sequence 
and your only clue is that the 
first stage requires a spanner so 
it seems reasonable to set off 
looking for one. There is 
nothing much to stop you as 
you explore - nothing to shoot 



- but certain areas are re- 
stricted to you at the start and 
kill you if you try to enter them. 
Time however is against you 
and your supplies of food and 
water soon disappear and have 
to be replenished as you find 
them. 

You die if either level 
reaches zero. Objects are fre- 
quently hidden behind corners 
'that you can't see' and so de- 
tailed exploration is essential. A 
scrolling message keeps you 
informed of what's going on. 

Chimera is an enjoyable 
arcade adventure but it lacks 
the sophistication of some of its 
bigger brothers. 

C.R.H. 



#7 



6 /«\ 7 



on the shores of Crystal Lake 
and the field of action covers 30 
screens with blood. In addition 
there are three buildings: a 
church and a barn (four screens 
each (plus a bungalow (12 
screens). This gives Jason 
plenty of room to cleave. 

The computer selects a 
character for you to play and it 
is your duty to look after the 
other players by herding them 
all into a room where you have 
placed a sanctuary cross. 

At some point you may have 
to arm yourself with one of the 
weapons lying around and 
tackle Jason in combat. If you 
succeed in killing him don't 
feel too secure, just when you 



think you have seen the last of 
him, up he pops again feeling 
pretty cut-up about his last 
encounter. 

The game is quite challeng- 
ing to play and the graphics are 
blocky but pleasant, I don't 
really think that the quality of 
the game will really have as 
much sway with sales as the 
horrific subject matter. The 
playing instructions give hints 
on how to get the most from 
the horrifying screaming sound 
effects. 

A gory story for the blood- 
thirsty buyer and just to 
quench that thirst you get two 
foaming blood capsules with 
the game. E.D. 



■ v ACTION PEP LA V — 2' ^ 
^%«Jr 1^1^ ■ ■ Ongioalily Payability Graph, c* Value Tor 



Enigmaforce 

Beyond Software £9.95 C64 * Joystick 





N m I'm f^m 



£t2 fl 

Oops *y 



THE E-TEAM ARE BACK WHEN 
Enigmaforce try to overcome 
the deadly General Zoff. This is 
the expected sequel to 
Shadowfire and the gameplay 
is even more advanced than 
before. 

Having captured Zoff in the 
previous game, four members 



of the Force were accompany- 
ing Zoff to his trial when their 
ship crashed on team member 
Syylk's home planet after 
collison with a gravity mine. 
The game starts as the Enigma- 
force members regain 
consciousness and discover 
that Zoff has made off. 




Syylk's insectoid people 
have enough to worry about 
with an attack from reptiloide 
so the team has to enlist the 
help of the insectoid com- 
mander. This involves the team 
in much frantic searching and 
the game allows you to 
disperse your force as you see 
fit. Each member can be 
located and relocated when- 
ever necessary and the activity 
selection panel on the lower 
half of the split screen is used to 
issue commands. 

Enigmaforce consists of 
Zark Montor the team leader, 
Syylk the strong warrior, 
Sevrina Maris the markswoman 
and locksmith, and last but not 
teast Maul the combat Droid. 

As the team goes from 
location to location they can 
pick up objects which are lying 
there but care has to be taken 
to ensure that each player's 
special skills are catered for. 
When the commander has 
been located, the reptiloid 
zone must be searched for the 
only serviceable spacecraft on 
the planet. Zoff is also search- 
ing and must be stopped and 
captured before Republican 
destructor tugs arrive to blast 
the planet to smithereens. 

The activity panel is fairly 
complex and it takes a little 
time to familiarise yourself with 
it. At the top is a picture of each 
team member and if the cross- 
wire selector is placed over one 
of these panels and the fire 
button pressed then you are 



immediately shown that team 
member's current location. 
You can now use the arrow 
icons to dictate a direction for 
that character to take or select a 
sequence of actions for them (o 
perform. At first it is relatively 
simple to use the panel but as 
the game progresses and the 
action hots up, you have to 
keep your wits about you and 
your joystick on the move. 

Action commands are like 
an icon driven version of an 
adventure command. For 
example, to get Maul to pick up 
explosives you first select 
Maul's icon panel. Then check 
the inventory of objects 
around to see that the 
explosives icon is there and 
place the crosswire over the 
pickup icon. If the button is 
pressed when the crosswire has 
been moved over the 
explosives icon, it will move 
across into the panel showing 
the list of objects carried by 
Maui. 

As you can guess the game 
and the graphics are very 
sophisticated and put many 
similar multiscreen games to 
shame. It just shows what can 
be done with the 64 in the 
hands of an intelligent pro- 
grammer. Smooth animation of 
each character's movement 
adds cartoon realism to the 
game and the excitement of 
the many skirmishes should 
hold your attention for hours. 

E.D. 




The Human Race 
Mastertronic £1.99 



This is achieved by completing 
each screen after which the ape 
slowly develops its manly 
features. 

The game begins in prehis- 
toric times complete with a 
large stegasauras, dragonfly, 
pterodactyl and lots of 
bananas. Your task is to get the 
ape to the largest banana whilst 
avoiding contact with the 
roaming dinosaurs. The route 
to the banana appears very 
straight-forward but it requires 
some thought if you are to 
reach it. Once completed 
THE HUMAN RACE TOOK game. The idea is quite simple- chapter two begins. 
350,000.000 to develop years you have to develop a rather Here the ape is sent forward 
and believe me it will take you ugly and stupid ape into a man, to the age of lava and fireballs, 
as many hours to complete this remer 




moving pathway without 
falling off or getting hit by a 
hurling fireball. This screen 
belongs in something like 
'journey To The Centre Of The 
Earth'l 

As the game continues the 
tasks become very difficult but 
still enjoyable and certainly 
provide a good challenge. 

The graphics aren't the best 
I've seen and there is a rather 
annoying delay every time a life 
is lost but generally the game 
provides excellent value for 
money. 

Go ahead and buy it and 
watch out for a lovely loincloth 
that would be worthy of any 




You don't have to be mad to 




Company Profile 



work here, but it helps. Marie 



Curry visited Ian Stewart at 



THERE'S A LITTLE GREEN MAN ALIVE AND 
well and living in Sheffield. This pea- 
coloured gremlin has made his home 
there since June 1984 and the climate 
seems to agree with him. 

Gremlin Graphics is a small compact 
outfit run by the exuberant Ian Stewart 
who defines himself as the inspiration 
behind many of his company's products. 
Entering the micro industry through 
Laskys' first computer outlet in Sheffield, 
he soon realised that there were 
opportunities for a bright young man in 
this youthful business. 

Inspired with this confidence, Ian 
opened Sheffield's first specialist 
computer shop aptly named. Just Micro. 
The venture took off and Just Micro did 
just fine. It was less than a year later that 
the gremlin got into the works. 

In the summer of 1984, Ian and 
partner, Kevin Norburn, took the plunge, 
caught the gremlin and stuck him on 
some headed notepaper to form Gremlin 
Graphics. Once this was done there was 
no going back and Wanted: Monty Mole, 
Gremlin's first game, was launched amid a 
blaze of publicity. The miners' strike was 
then entering the long and not so hot 
summer and the Gremlin Graphics boys 
saw the potential of Arthur Scargill's 
activities as material for a computer game 
storyline. Because of its topical content 
the game was treated to wide coverage on. 
both national television and radio and 
became a chart success paving the way for 
two subsequent Monty games. 

Ian Stewart believes that a major 
reason for Gremlin Graphics's continued 
success in the production of popular 
games is the connection which is closely 
maintained with Just Micro. All Gremlin's 
games are extensively tested on 
unsuspecting members of the public who 
innocently venture into the shop. 
"Customers are excellent bug fighters." 
commented Ian. "Our programmers may 
test a game for days without finding 
anything, then one of the kids will come 
across a bug in a few minutes of play." 

The Gremlin outfit listens very 
carefully to the comments of the 
customers who try out new products. Ian 
crisply summed up the Gremlin policy in 
this area: "If we don't get the reaction we 
want then we scuttle it!" Simple but 
effective. 

Many Gremlin game ideas are built up 
around a comical central character and 
this seems to have become a successful 
technique. Names such as Potty Pigeon, 
Sam Stoat Safebreaker and Thing on a 



GRILLING 




Spring come to mind. "We like to base a 
game around a particular character to 
stimulate the imagination of the player," 
said Ian. "We tend to concentrate on 
arcade games because they give an outlet 
to the sense of humour which is a ruling 
principle at Gremlin. Wherever I am, I'm 
always thinking of new ideas for games." 

There are only four full time 
programmers at Gremlin, other work is 
done by about 10 regular freelancers. Pete 
Harrap who wrote the original Monty 
Mole is now a permanent member of 
staff. His association with Ian Stewart 
began when his Spectrum broke down 
and Just Micro lent him another until it 
was repaired. Ian said: "Pete was a 
customer in the shop and we realised he 
had great programming ability. We lent 
him the Spectrum and it just went on from 
there." However, Sheffield natives with 
defunct computers shouldn't rush round 
to try and get a loan of a machine. 

The full lime programmers at Gremlin 
are now collaborating to produce a series 
of games based on the popular role- 
playing books: The Way of the Tiger. The 
books revolve around the adventures of 
Avenger, a Ninja warrior. Work on the 
series is progressing fast and the first part 
should be available in February. Although 
programmers at Gremlin have always 
worked together to a certain extent this is 
the first project into which the team have 
ploughed their joint efforts from its 
inception and the co-operation between 
them has been extremely successful. 
Praising his boys, Ian said: "Areas which 
need improvement can be sorted out 
through collaboration. There's never a 
cross word between them." There will be 
four games in the series when it is 



I i(ini<-u miu — " - 

similar story line to the books. 

Another new game. Bounder, features 
the incredible antics of a bouncing tennis 
ball. It's certainly a different concept for a 
game as the ball leaps toward you out of 
the screen and then bounces back into 
the distance. Gremlin's programmers 
have even put spin on it! According to Ian 
the game comes in a value for money pack 
with another game, entitled Metabolis, 
on the back of the cassette. 

C-16 and Plus/4 games are an 
important part of the Gremlin range and 
owners will be pleased to know that 
Gremlin has no intention of discontinuing 
this commitment to these machines. 
There are probably around 80,000 C-16 
and Plus/4 owners in the country now and 
there are very few software houses which 
take notice of them. Looking at the 
situation in the cold light of day Ian 
remarked: "The less people that produce 
games for the C-16 and Plus/4, the better 
for Gremlin." A recently released 
compilation contains four games for £9 95 
so the much neglected users can really get 
zapping. 

Ian obviously believes hes got his 
policy right but he stresses the fact that 
above all the computer industry is a lot of 
fun. "The main strength of Gremlin is the 
atmosphere in the firm. This makes for a 
good working situation and consequently 
good products." he remarked almost 
drowned out by the zapping noises from 
next door and the blare of electronic 
music from a neighbouring office. 

When asked to sum up Gremlin as a 
software house, Ian makes the place 
sound more like a lunatic asylum. 
"Basically we're a barmy lot up here." 




Yet another bundle of replies 



to your letters. 



Problems, Problems 



I WAS DELIGHTED WHEN THE PROGRAM 
System 64 by J A Wolfe appeared in the 
August issue of the magazine. I was able to 
enier all the addresses of my associates 
and it worked well. That is to say until this 
week! 

I wanted to amend the address of a 
colleague who had moved house. So, 
using option 2 'Delete Record'. I 
cancelled the old address and re-entered 
the new address on the end of the list of 

addresses. 

Imagine my disappointment when I 
printed out a fresh list of addresses to find 
that every single address after the one I" 
had deleted now had the wrong name. It 
appears that the deletion in your program 
only erases the name and not the whole 
address. I have studied the program listing 
but have been unable to amend it. Can 
you help? 

D W Passmore, Sidmouth 



I have typed in the Home Accounts 
program from your magazine. However I 
cannot seem to get it to work. 

I have checked my program against 
the one printed in the magazine and can't 
find any errors. I haven't seen any 
corrections printed for this program but I 
believe that the error is yours and not 
mine. 

Why don't you check your programs 
before you print them in the magazine as 
it would no doubt solve many problems? 
A Sherwood, Bridlington 

Every post delivered to the Your 
Commodore office is guaranteed to have 
quite a large number of letters similar to 
the ones above. So it is probably worth 
making a few points clear 



Every program that we publish in the 
magazine is very thoroughly tested before 
we print it. 

The listings in the magazine are not 
typeset in any way. What we actually do is 
get a printout of the program which is 
then placed on the page as artwork. This 
leaves very little chance for errors to 
occur. 

Obviously errors do creep in 
sometimes. When they do we always 
publish corrections in the magazine. 
Corrections don't usually appear in the 
next issue of Your Commodore but in one 
after that. This is because when one issue 
is on sale another is just about ready to be 
printed. 

Most of the time the errors are made 
by the person typing the listing into the 
machine. No matter how many times you 
check them little errors do slip through. In 
order to help you with this we will offer to 
send a new computer listing to anyone 
having problems with a program if they 
send us a stamped self-addressed 
envelope and state clearly what they 
require. 

In the near future we are hoping to 
start a software service where all of the 
programs in a particular issue will be 
available on cassette but we have no firm 
date for this as yet. 

In the meantime a couple of features 
that will try to give you some hints about 
de-bugging programs have been com- 
missioned. And. being honest, fault 
finding a program is an extremely good 
way of learning about programming. 
Perhaps we should start a spot the de- 
liberate mistake page! 

Coing back to the System 64 program. 
It appears that the programmer made a 
few mistakes when he wrote the program. 
He only deletes the name and not the 
address. This is done in the Sort routine. 
This is the type of mistake that it is not 
a/ways possible to spot so please make 
sure that you give any programs sent to 
the magazine a thorough testing before 
you stick them in the post. Anyway here 
are the lines that will need to be added to 
delete a whole record. 



3562 LET L2$(L)=L2$(T):LET L2$0>"*" 

3563 LET L3$(L)=L3$(T) : LET L3$<T>="*" 

3564 LET L4$(L)=L4$(T):LET L4$(T>="*" 

3565 LET L5$(L)=L5$(T>:LET L5$(T)='"" 

3566 LET L6$U)=L6$(T):LET L6$(T)="-" 



Too Many Ads? 



I am writing to complain about the recent 
change which has occurred since the 
merging of Your Commodore and Your 
64. It has come to my attention that there 
has been a substantial increase in the 
amount of advertisements, at least 25% in 
the December issue. As I subscribe to 
your magazine I am worried that the 
amount of advertisements may increase 
even further in the future. 

I would also like to see in the magazine 
an extra page of Flippo (In Arcadia) in 
exchange for one less page of Sense of 
Adventure, as I feel that Flippo is far more 
interesting. 

A suggestion I have for your monthly 
competition is, perhaps, that you should 
ask people to send in the best one line 
program or the best game or utility using 
no more than 100 linnes since a spot the 
difference competition does not involve 
the use of a computer in any way. 

I hope that the points I have brought 
to your attention will help to make your 
magazine even more absorbing. 
Raymond Webb, Guestling 

Thanks for your comments, Raymond. It's 
always interesting to find out what people 
think of the magazine. Your main worry 
seems to be concerning advertising. This 
varies greatly throughout the year and 
tends to rise at Christmas because manu- 
facturers want to make the most of the 
extra money we all spend. Advertising 
forms a large part of our income and it is 
therefore essential that we carry a certain 
amount in order to keep up the standard 
of the magazine as a whole. 

As an arcade game fan, we can bring 
you some good news. In the near future 
we will be taking some more ideas from 
Your 64 to improve our arcade coverage. 
However, adventure players needn't 
worry because, you won't suffer from this 
at all. 

As for your comment on our 
competitions. Raymond. We do try and 
run the occasional different one, but the 
beauty of a spot the difference compet- 
ition is that anyone can enter, and they 
needn't have any knowledge of 
programming to do so. Since the prizes 
are usually games of some sort, then it 
seems illogical to set a problem which 
only programmers can answer. 




David Janda takes control and 



guides you through 



Commodore's Pilot package. 



THIS MONTH'S LANGUAGE LAB IS 
rather different from those in previous 
issues. Presented here is a brief intro- 
duction to a language that is very popular 
in the educational field in America. No, 
it's not Logo, but Pilot, and in my opinion, 
it would be just as popular if ir was given 
the amount of attention it deserves. Com- 
modore Pilot is the only package which is 
being reviewed, and the surprising thing 
is that the Commodore version of 
standard Pilot (known as common Pilot) 
includes many facilities not found in the 
standard. 

It is worth pointing out that although 
the language is designed to be used by 
educators to write interactive educational 
programs, it does have its attractions for 
the programmer. The reason I say this is 
because of pattern matching. 

It can be said that the job of a pro- 
grammer is to solve the problem at hand. 
In educational programs this can be quite 
difficult as there is a lot of user input 
which has to be interrogated. This is not so 




easy, and programmers normally find 
themselves spending a lot of time writing 
routines that interrogate user input. This 
can distract them from the job at hand - 
i.e. solving the problem! 

Pilot incorporates a number of tools 
that facilitate the interrogation of user 
input, thus leaving the programmer to get 
on with the main task. These tools can be 
applied to problems associated with string 
manipulation and pattern matching. 

Pilot — The Language 

Pilot is a computer assisted instructional 
(CAI) language, which is designed for 
teachers to produce educational 
programs - courseware as the manual 
terms it. The idea behind Pilot is that it 
should be easy for teachers to produce 
programs that interact with the student on 
a question and answer level. 

The version which is supplied on disk 
will run Common Pilot programs, and do 
a lot more since extensions have been 
added. These allow for the use of colour, 
graphics and sprites. An example is that 
text windows may be set up to allow for 
questions and answers to be displayed on 
different sections of the screen. 

Graphics are catered for with 
commands to allow lines to be drawn/ 
plotted as well as filled in with colour. A 
group of sprite and colour commands is 
also included, and the extensions 
facilitate the use of the advanced features 
of the C64. 

The syntax of Pilot is very simple. Pilot 
instructions consist of several parts. First, 
there is a one-letter opcode (of which 
there are 20. The opcode is then option- 
ally followed bya modifier which changes 
the way the opcode is going to be execu- 
ted. Conditions can then follow and they 
can determine whether the instruction is 
to be carried out. This is best described 
with an example; 

TS(A=5): Correct, the answer is 5. 



Here the opcode T means print 
something, but the screen is first cleared 
with the modifier S. The condition is that 
the answer A equals five, and if so the text 
in the field (everything following the 
colon) will be printed. 

Unlike Basic. Pilot does not require 
strings to be enclosed in quotes. Instead, 
the string variable or literal is placed after 
the separator. This very simple Pilot 
program demonstrates this: 

T: This will be printed 

This will simply display "This will be 
printed" at the current cursor location. 
However, a return is also printed after 
each occurrence of the T command. It is 
possible to 'hold', or keep the cursor on 
the same line by using the H modifier. 

TH: What is your name 

This will display the message, and any 
answer will be entered on the same line (it 
is important to leave two spaces after the 
message). 

Pilot Data Types 

Maths in Pilot is integer only which isa bit 
of a restriction. The range is between - 
32768 and +32767. Another restriction is 
that only 26 variables are allowed for. 

Performing calculations is done with 
the computer instruction which takes the 
form of C. Variables assignment is 
performed after the separator and 
printing the values of variables requires a 
£ character to precede the variable name. 



C:A=2+2 — assigns A with 4 

C:B=(2+2) # (3+1) — assigns B with 16 

T:Here is a sum. . . 

TH:2+2= 

C:A=2+2 

T:£A 

T:There, the answer is £A 



Programming 



Strings are handled in a very flexible 
way. But, as mentioned Pilot only has 26 
variables available so it is not possible to 
have a string and a numeric variable of the 
same letter. 

Before a variable can be used as a 
string, it must first be dimensioned with its 
maximum length. Pilot allows a maximum 
string length of 255, and the command 
used to dimension string is D. The $ 
character is used to identify thai the 
variable is a string, but this is not 
absolutely necessary. 

D:A$O0) 

The computer command is used to 
assign a string variable with a value. In this 
case, it is necessary to use quotes. When 
using the T command to print the 
contents of a string variable a $ character 
is used to precede the variable. 

D:A$(14) 

C:A$="Your Commodore" 
T:This magazine is called $A$ 

The C command is very flexible when 
it comes to string assignment. Strings can 
be assigned with sub-strings, concati- 
nated and so on. Indexing is allowed 
which can be used on the source or object 
string. 

D:A$(18) 
D:B$(20) 

C:A$="Thisis funny" 
C:B$="He is not very funny" 
C:A$<9,3)=B$(11,4) 
T:$A$ 

Would print: "This is very funny". 

Concatination is also possible using 
the !! operator. 

D:A$(6) 

D:B$(7) 

D:C$(13) 

C:A$="Hello" 

C:B$="readers" 

C:C$=A$t!BS 

T:SC$ 

Would print: "Hello readers". 

Getting user input into the micro is 
very simple in Pilot. A pre-defined input 
buffer called %B is used to store user 
input. It works like this: 

T:Hello, who are you? 
A: 

T: Pleased to meet you $%B 

Notice that like ordinary string variables, 
the input buffer requires the $ to be 
prefixed to the buffer name when it is 
being printed. 

The A is the accept command, and it 
can work with numeric and string 



variables as well as the input buffer 
variable: 

D:A$(10) 

TS:What is your name? 
A:$A$ 

T:And how old are you $A$ ? 
A:£B 

T:You are £B years old then $A$ 

The problem with user input is that you 
don't always get it in the format you 
wanted. Some people would enter their 
names in upper case, some lower, and 
some as a mixture of both. This can be a 
real headache especially if the input is to 
be processed. Pilot provides a problem 
command PR that allows input to be 
'converted' into a specified choice. PR:U 
will convert all input to upper case, PR:L 
to lower and PR:S will strip any input of 
spaces. PR:/* will reset the options. 

The Clever Stuff 

Pattern matching is achieved with the 
match command M. Assuming we wanted 
to check that the user reads this mag, we 
could pose the question and process the 
answer using this program: 

T:What Commodore magazine do you 
read? 

M:Your Commodore 
A: 

Now, if the answer entered was "I read a 
magazine called Your Commodore which 
I think is great", believe it or not a match 
would be made. This is because Pilot does 
the hard work involved in searching 
(called window searching) though the 
users input checking to see if there is a 
match. 

Problems with this are that the user 
may enter the answer in upper or lower 
case. To still get a match the PR command 
would be used before the match 
command to convert the input. 

Match used with the S modifier will 
even accept answers that are spelt 
incorrectly! The S modifier will accept 
an answer even if one tetter is wrong, or if 
a pair of characters have been reversed - 
very handy! 

More flexibility is allowed with the • 
and & characters when used in the match 
command: 

M:Comm*dore 

This simply means 'accept any letter in 
place of the •'. The & means any number 
of characters. 

Summary 

There are many, many other features to 
the Pilot language. Jumping, subroutines. 



multiple choice tests, even hinting is 
possible. All these features make Pilot a 
very practical tool for educational 
programming. 

The language does suffer in some 
areas though. The restriction on the 
number and length of variables is a 
serious one, as is the lack of floating point 
maths. But these faults are common to the 
Pilot standard, and are not unique to 
Commodore's implementation. 

Even though the language is very 
powerful, it is not very hard to learn. 
Commodore Pilot has 20 commands with 
modifiers and because the syntax is very 
simple, it is quite possioble to write 
complex programs in a very short time. 

I would strongly recommend Pilot to 
anyone who wishes to write programs that 
involve processing interactive answers. 
The features available in the language 
enable the programmer to 'get on with 
the job'. 

Commodore Pilot 

Commodore Pilot is supplied on disk 
only, together with a very good 111 page 
tutorial/instruction manual. Two versions 
of the Pilot interpreter are supplied on 
the distribution disk; a development 
version which is used to write, edit and 
run Pilot programs, and a run only version 
that is identical except programs can only 
be loaded and run. 

Other files on the disk include three 
demonstration programs, a simple sprite 
editor (written in Pilot), and a Pilot 
program that enables the user to experi- 
ment with sounds on the C64 

The actual Pilot package has four 
modes of operation. First there is the edit 
mode which is used for program creation 
and editing. The run mode is for running 
the program, and the command mode is 
used for loading, saving and printing 
programs. Finally, the immediate mode 
(which is similar to Basic's immediate 
mode) allows the programmer to 
experiment with Pilot by trying out Pilot 
commands one at a time. This mode is 
very handy when learning the language. 

Graphics on a 320*200 grid are catered 
for. Points can be plotted and removed, 
lines drawn and the graphics origin 
changed. Both text and graphics can be 
freely mixed and a split-screen command 
allows the screen to be divided between 
graphics/text output and prompts/user 
input. 

Other features include sound, sprites 
and user definable characters, although I 
must say that these could have been 
implemented in a more friendly way. 

Commodore Pilot not only conforms 
to the standard common Pilot, but also 
includes many new features (some of 
which I have mentioned). The package is 
an easy one to use which is a blessing. 
Highly recommended! 



PROGRAMMER 

OF THE 

YEAR 



£s commodore 



This month's entry is 



Spike, an excellent 



game by Shane 



Stevens. 



A LARGE NUMBER OF GAMES 
have been entered for the 
Programmer of the Year Com- 
petition. Spike is certainly an 
above average entry. It is 
definitely worth the effort of 
typing it in. 

In the game you find your- 
self as Spike travelling around a 
Power Grid. Hidden some- 
where within the grid is your 
trusty C64. Your job is to find it. 

Of course, life isn't easy and 
the Sparks brothers are out to 
get you. The number of sparks 
charging around the grid 
depends on the level at which 
you choose to play, there are 
nine in all. 

Full playing instructions are 
included in the game so there is 
no point giving them here. 

Getting It All In 

Spike is in two parts. The first 
pan is in Basic and should be 
typed in and saved on to tape 
or disk. Make sure you read the 
page that tells you all about our 
method of printing listings 
before you start (I don't want 
(HOME) - Ed). 

If you are using a cassette 
then make sure that you 
change the 

LOAD "SPIKE",8,1 

In line 40 to: 

LOAD "SPIKE".1,1 

Once you have SAVEd the 
Basic you can then tackle the 
machine code. Yes, I know that 
there's a lot of it but we have 
tried to make it as easy as 
possible for you. 



Elsewhere in this magazine 
you will find the Your 
Commodore Easy Entry 
program. You should type this 
in and save on something safe. 
You will need this for most of 
the machine code programs in 
Your Commodore. RUN this 
and follow the instructions 
with the Easy Entry article. 
Don't forget each line is 
checked as you type it in and 
you can SAVE what you have 
entered at any time. 



Make sure you SAVE it 
before you attempt to RUN it. 

Spike should be SAVED 
straight after the SPIKE 
LOADER and is SAVEd 
between the following 
locations: 



Start Address 
End Address : 



32768 
37296 



Remember to press F1 in 
the Easy Entry program to 
activate the SAVE routine, and 



make sure you save the 
program with the name SPIKE. 

And On We Go 

Now that you have both parts 
stored on tape you simply have 
to LOAD and RUN the SPIKE 
LOADER program. This will 
automatically LOAD the 
second part and the game will 
start to RUN. 
Have fun! 



Program: Spike Load 

1 REM SPIKE BY SHANE STEVENS 

85" 

2 IF fl=l THEN GOTO 20 

4 A=A+1 : LOAD "SPIKE", 8, 1 
:REH CHANGE TO ,1,1 FOR 
CASSETTE 

20 S=54272:F0R L=S TO S+24 
:READ DA: POKE L,DA:NEXT 

30 DATA 96,22,0,1.0,35,166, 
195,16,0,1,0,35,166,48,4, 
0,9,0,35,166,0,15,244,31 

40 FOR AD=49160 TO 49202 
:READ DA: POKE AD, DA: NEXT 

50 DATA 120,173,224,3,174, 
225,3,172,226,3,141,4,212, 
142,11,212,140,18,212,88, 
96 

60 DATA 206,224.2.206,225,3, 
206.226,3.32,8,192,238, 
224,3,23B,225. 3,238,226,3, 
96 

70 POKE 992.67:P0KE 993.65 

:P0KE 994,33 
90 POKE S+18.33:F0R T=l TO 1 

30:NEXT:PQKE S+18,32 

:P0KE S*14,1B0 

: POKE S*1B,33 
95 FOR T=l TO 130:NEXT 
100 POKE S*18.32:P0KE S+22,1 

:P0KE S»14,251 

:P0KE SM8,33:F0P T=15 TO 
150:P0KE S*22,T:NEXT 
110 POKE S+18,32:P0KE S*22.90 

:P0KE S+14,71:P0KE SMS. 5 



:P0KE S*1B.33:FQR T»J TO 

130:NEXT 
120 POKE S+1B,32:P0KE S+14, 

152:P0KE S*1B.33 

:F0R T=l TO 140:NEXT 

:P0KE S*1B,32 
130 POKE S*14,237:SYS 49160 

:F0R T=l TO !B0:NEXT 

:P0KE S+3,B:P0KE S+10,8 
140 FOR T=i TO 1B0:NEXT 

:SYS 491B1:F0R T=l TO 170 

:NEXT:P0KE S+3, 1 

:P0KE S*10.1 
150 SYS 49160:F0R T=l TO 80 

:NEXT: SVS 49181 

:F0R T=I TO 170:NEXT 

:P0KE S*3,8;P0KE S*10,B 
160 SYS 49160:F0R T=l TO 80 

:NEXT:SYS 49181 

:F0R T=l TO 170:NEXT 

:P0KE S*3,1:P0KE S*10.1 
170 SYS 49160:FDR T=0 TO 170 

:NEIT:P0KE S+3,8 

:PQKE S+10,8:P0KE S+14. 71 

:PQKE S+15.6 

:90 FOR T=l TO 100:NEXT 

:SYS 49181:F0R T=l TO 270 

:NEXT:P0KE 992,17 

;P0KE 993,17 
185 A=50:B=37:C=31 

: POKE S+6. 249: POKE S+13, 

249:P0KE S+20,249 

:P0KE 994,17 
'.90 POKE S.60:P0KE S*1,A 

:PQKE S+7,162:P0KE S*B,B 



:P0KE S+14,165:P0KE S+15.C 
200 SYS 49160:FOR T=l TO 200 

:NEIT:SYS 49181 

:F0R T=l TO 21:A=A-l:B=B-i 

:C=C-1:P0KE S+1,A 
210 POKE S+B,B:P0KE S*15,C 

:P0KE S*14,48:P0KE S+15,4 

:P0KE S+20,242 
215 POKE S,119:P0KE 8*1,7 

:P0KE S*7,25l:P0KE S+B.4 

:P0KE S*6.165:P0KE S+13, 

165 

217 G0SUB 220:G0T0 290 
220 POKE S+18.65:F0R T=l TO 

170:NEXT:P0KE S+17,1 

:FQR T=l TO 75:NEXT 

:P0KE S+18,64 
230 FOR T=l TO I70:NEXT 

:P0KE S+17,B:P0KE S*1B,65 

:F0R T=l TO 75: NEXT 

:P0KE S+1B.64 
240 FOR T=l TO 170:NEXT 

:P0KE S+17,1:P0KE SU8.65 

:F0R T=l TO 75:NEXT 

:P0KE S+18,64 
250 FOR T=! TO 170:NEXT 

:P0KE S*17,B:P0KE S+16,65 

:F0R T«l TO 75:NEXT 

:P0KE 5*18,64 
260 FOR T=l TO I70:NEXT 

:PQKE S+17.1:PQKE SMB.65 

:F0R T=l TO 75:NEXT 

:P0KE S+18.64 
270 FOR T«I TO 170:NEIT 

:P0KE S+17,B:P0KE 5*18,65 

:F0R T=l TC 75:NEXT ► 



(POKE S+18,64:RETURN 
280 POKE S+4,33:PQKE S+I 1 , 33 
:F3R T=l TO 300:NEXT 
:POKE S+4,32:P0KE 8*11,32 
290 POKE S,97:P0KE S+1,8 
:POKE S+7,152:P0KE 8*8,3 
:X=25:Y=18:Z=15 
300 POKE S+4,33:P0KE S+11,33 
:FOR T=l TO 100:NEXT 
:POKE S+4,32:P0KE S+11,32 
310 FOR TM TO 180:NEXT 
:POKE S+14,35:P0KE S+15,3 
:SOSUB 220:P0KE S+18,32 
:FOR T=l TO 30:NEXT 
320 POKE S+18,33:F0R T=l TO 
100:NEIT:F0R X=3 TO 255 S 
TEP 2.5:P0KE S+15,X:NEXT 
350 POKE S+14,48:P0KE S+15,4 
:GOSUB 220: POKE S,251 
:POKE S+1,4:P0KE S+7,247 
:POKE S+8,9 
360 POKE S+4.33:P0KE S+11,33 
:FOR T=l TO 300: NEXT 
:POKE S+4,32:P0KE S+11,32 
370 POKE S,97:PQKE S+1,8 
:POKE S+7,152:P0KE S+8,5 
:X=25:Y=1B:Z=30 
380 POKE S+4,33:P0KE S+11,33 
:FOR T»i TO 100:NEXT 
:POKE S*4,32:P0KE S+11,32 
390 FOR T=l TO 180: NEXT 
:POKE S+14,35:P0KE S+15,3 
:GOSUB 220 
400 POKE S+6,249:P0KE S+13, 

249: POKE 5*20,249 
410 POKE S,30:P0KE S+l.X 
:POK£ S+7,209:P0KE S+B,Y 
:POKE S+14,210:P0KE 
420 POKE S+3,8:P0KE S+10,8 
:SYS 49160.-F0R T=! TO 200 
:NEXT:SYS 49181 
:FOR T=l TO 15 
430 X=M:Y=Y-1:Z=Z-1 
:POKE S+U:POKE S+8,Y 
:POKE S+15,Z:NEXT 
:POKE S+20,241 
440 POKE S+14,48:P0KE S*115,4 
: GQSUB 220:P0KE S,25l 
:POKE S+1,4:P0KE S+7,125 
:POKE S+8,2 
450 POKE S+4,3:PQKE S+11.33 
;fOR T=l TO 250:NEXT 
:POKE S+6,242:P0KE S+13, 
242 

455 POKE S+4,32:P0KE S+11,32 
;FOR T=l TO 10:NEIT 

460 POKE S,97:PQKE S+1,8 
:POKE S+7,152:P0KE S+5,5 

470 POKE S+4,33:P0KE S*ll,33 
;FOR T=l TO 100:NEXT 



:POKE S+4,32:PQKE S+11,32 
480 FOR T=l TO 180:NEXT 

:POKE S+I4,35:P0KE S+15,3 

:GOSUB 220:P0KE S+18,32 

:POKE S+23,244 
490 POKE S+6,247:P0KE S+13, 

247:P0KE S+20,247:A=200 

:B=150:C=126:F0R T=l TO 1 

30: NEXT 
500 POKE 992,17:P0KE 993,17 

:POKE 994,17:P0KE S+18,65 

:F0R T=20 TO 120 STEP 2 

:POKE S+22,T 
505 NEXT: FOR T=120 TO 20 STE 

P-2:P0KE S+22,T:NEXT 

:POKE S+1B,64:F0R M TO 

100:NEXT 

510 POKE S,165:P0KE S+1,A 
:POKE S+7,96:PQKE S+8,B 

: POKE S+14,225:P0KE S+15,C 

511 POKE S+23,4:P0KE S+22,220 
520 SYS 49160:F0R T=l TO 100 

: NEXT: FOR T=l TO 1B6:A=A-1 

:B=B-.75:C=C-.63 

:POKE S+l.A 
530 POKE S+8,B:P0KE S+15,C 

: NEXT: POKE 5+8,22 

:POKE S+15,8:F0R T=l TO 1 

00: NEXT 
540 SYS 49181:F0R T»l TO 30 

:NEXT:SYS 49160 

:FOR T=l TO 100:NEXT 
550 SYS 49181:F0R T=l TO 180 

:NEXT:SYS 49160 

:FOR T=l TO 75:NEXT 
560 SYS 4918t:F0R T=l TQ 180 

:NEXT:SYS 49160 

:FOR T=l TO 75:NEXT 
570 SYS 49181:F0R T=l TO 180 

:NEXT:SYS 49160 

:FQR TM TO 75: NEXT 

:SYS 49181 
580 FOR T=l TO 40: NEXT 

:POKE S,135:PDKE S+1,33 

:POKE S+7,31:P0KE S+8,21 

:P0KE S+14,97 
590 SYS 49160:F0R T=l TO 70 

:NEXT:SYS 49181 

:FDR T=l TO 550: NEXT 

: POKE S,15:P0KE S+1,67 
600 POKE S+7,135:P0KE S+8,33 

:P0KE S+14,48:P0KE S+15,4 

:POKE 992,33:P0KE 993,33 
610 POKE 994,33:SYS 49160 

:FOR T=l TO 100:NEXT 

:SYS 49181 
700 POKE 53272, (PEEK (532721 A 

ND 240J0R 4 
710 POKE 53270,PEEK(53270)AN 

D 239 



720 POKE 53265.155 

730 POKE 53281, BC:POKE 646,FC 

800 POKE 53280,11 
:POKE 53281,12 

801 GOTO 840 

805 PR I NT ■ C CLEAR , WH I TE , UP2 , 
SPC163*******" 

810 PRINT" 

[NHITE.CH, RVSON,C83 
'SPIKE! [RVS0FF,C6,NHITE] 

B20 PRINT"tNHITE,SPC16,CT73"; 
830 RETURN 

840 GOSUB 805:PRINT"[H0HE, 
D0WN5.SPC63HELL0 AND HELC 
ONE T0ISPC.RVS0N3ISPIKE! 
[RVSOFF]." 
850 PRINT i [00NN,SPC6]Y0U ARE 

A PUNK, HENCE THE NAME" 
860 PRINT"[SPC6,RVS0N3 
!SPIKE'[RVSOFF].YOU MUST 
TRAVEL THE" 
870 PRINT"[SPC63PQNER GRID. 

AND AVOID THE' 
B80 PRINT"[SPC6,RVSON3 

ISPARKS BRQS'[RVS0FF,SPC3 
WHO GIVE YOU" 
890 PRINT"CSPC63A SHALL SHOC 

K.YQU CAN NTHSTAND" 
900 PRINT"[SPC6]F0UR OF THES 

E SHOCKS BEFORE YOU" 
910 PRINT"[SPC6]BEC0NE AtSPC, 
RVSQN3FRIZZEL! [RVS0FF3 
THE CONTROLS ARE": 
920 PRINTTSPC63FAIRLY HARD 

TQ 6ET USED TO AS" 
930 PRINT"CSPC63THE SCREEN 

IS TILTED ON A' 
940 PRINT"[SPC6]45 DEGREES 

ANGLE AND THEREFORE" 
950 PRINT"ISPC63THE JOYSTICK 

CONTROLS BECOME: 
960 PRINT-CSPC63JOYSTICK FOR 

NARD=NE* 
970 PRINT"[SPC63JOYSTICK BAC 

K[SPC33=SN B 
980 PRINT" CSPC63 JOYSTICK LEF 

TISPC3J=NH- 
990 PRINT"[SPC63J0YSTICK RI6 

HT[SPC23=SE" 
1000 GOSUB 5000: GOSUB 805 
1010 PRINT'tHOHE, DOWNS, SPC63 

THIS ADDS A DIFFICULTY" 
1020 PRINT'[SPC63FACTDR TO 

THE GAME. TO COMPLETE" 
1030 PRINT'[SPC63EACH LEVEL 

YOU MUST FIND AND" 
1040 PRINT" ESPC61ENCL0SE THE 

HIDDEN COMMODORE" 
1050 PRINT'[SPC6364 COMPUTER 



IN IT'S 6RIDDED" 
1060 PRINT" [SPC63DIAHOND. YOU 

CAN TELL HOW FAR" 
1070 PRINT'[SPC63FROH THE 

COMPUTER YOU ARE BY" 
1080 PRINTTSPC63THE SONAR 

BAR AT THE TOP OF THE" 
1090 PRINT" [SPC63SCREEN. WHEN 

THE BAR IS SHALL" 
2000 PRINT"[SPC63 

YOU ARE CLOSE AND WHEN 

IT'S' 

2010 PRINT"[SPC63LARGE YOU 

ARE FAR AWAY. IF YOU" 
2020 PRINT" ESPC63ENCLOSE THE 

WRONG GRID IT WILL" 
2030 PRINT"ESPC63TURN BLUE, 
THIS LOWERS YOUR" 

2040 PRINTVSPC63 

BONUS POINTS AT THE END 

OF THE" 
2050 PRINT"[SPC63LEVEL.YOU 

SCORE 10 POINTS FOR" 
2060 PRINT"(SPC63CR0SSIN6 

A SIDE OF A GRID AND" 
2070 PRINT-CSPC6JA BONUS FOR 

FINDING THE COMPUTER. " 
3000 GOSUB 5000: GOSUB 805 
3010 PRINT"[H0HE,D0WN5.SPC63 
AT THE BE6INING OF THE 

GAME" 
3020 PRINT"[SPC63 

YOU CAN SELECT A STARTING 

LEVEL" 

3030 PRINT'[SPC63(l-9) AND 
A DIFFICULTY LEVL (E/H). 

3040 PRINT"[SPC63THESE ARE 

SET TO 5 AND H WHEN" 
3050 PRINT"ISPC63Y0U FIRST 

START BUT CAN BE' 
3060 PRINT" CSPC63CHANGED BY 

PUSHING (1-9) OR" 
3070 PRINT"[SPC63(E/H) FOR 
EASY AND HARD. ANOTHER" 
3080 PRINTUSPC63 

USEFUL FEATURE OFtSPC, 

RVS0N1!SPIKE![RVS0FF,SPC3 

IS" 

3090 PRINTTSPC63THE ABILITY 

TO PAUSE THE GAME" 
4000 PRINT"ISPC63BY PRESSING 

THE SHIFT KEY OR THE" 
4010 PRINT" [SPC63SHIFT/LQCK 

KEY." 
4020 GOTO 5030 
5000 PRINT'tD0WN,SPC6]PRESS 

SPACE BAR TO CONTINUE. . 
eupj" r 



5010 SET A$:IF A$<>" 'THEN 5 SPACE BAR TO PLAY. [UP]' 

010 5040 6ET fl«: IF A$<>' 'THEN 5 
5020 RETURN 040 

5030 PRINT i [D0HN,SPC9]PRESS 5050 SYS 32768 ■ 







3276B: 16? 005 


141 


190 


207 


169 


072 


141 


180 


207 


032 


019 


252 


32780:144 169 


AA7 

007 


141 


AA 1 

201 


A A7 

207 


169 


A| A 

040 


4 41 1 

141 


AAA 

200 


A A7 

207 


4 / n 

169 


Alp 

015 


32/92:012 141 


1 DO 

m 


1AT 

207 


i t ft 

169 


ftftA 

000 


141 


ATQ 

039 


208 


• ii 
162 


All 

024 


t CT 

157 


IftT 

203 


710ftliftAA til 

32804:000 212 


202 


iii 
224 


let 

255 


Iftft 

208 


248 


169 


ATA 

070 


141 


1C1 

254 


1A7 

207 


I Tft 

17B 


32816:167 120 


141 


1CT 

253 


1AT 

207 


169 


ICC 

255 


< 1 1 
141 


Ait 

015 


A 4 A 

212 


1 1 4 

141 


i ni 

1B2 


AftC 

005 


Twin. "Ai tin 

32828:207 169 


i in 

128 


4 M 4 

141 


A | ft 

018 


1 1 1 
212 


169 


All 

064 


4 4% 4 

141 


136 


AAA 

002 


169 


AAA 

080 


Tift 1 A . ftft t 4 1 « 

32840:001 141 


246 


207 


169 


A I ft 

019 


ATI 

032 


1 4 A 

210 


255 


lift 

169 


AAA 

000 


141 


1 A I 

126 


32852:032 208 


1 "IT 

173 


A 4 A 

014 


220 


041 


AC 1 

254 


141 


A 1 A 

014 


AAA 

220 


4 1 C 

165 


AA t 

001 


A7 4 

031 


TIQi I.Ai < ne 1 

32864:041 251 


133 


A A 4 

001 


160 


AAA 

000 


4 nc 

1B5 


AAA 

000 


AAA 

20B 


1(7 

153 


AAA 

000 


AAA 

080 


AAA 

028 


328/6: 183 000 


1AQ 

209 


1 CT 

153 


AAA 
000 


not 
OBI 


1 oc 

185 


AAA 

000 


1 1 A 

210 


1 C 1 

153 


ftftft 

000 


Ann 

082 


Aftl 

086 


32ooB: 183 000 


11 ■ 

211 


153 


AAA 

000 


AQT 

093 


I QC 

IBS 


AAA. 

000 


1*1 
212 


1 CT 

153 


AAA 

000 


Am 

0B4 


1 Al 

106 


71QAA. 1 OC AAA 

32900: 185 000 


11 7 

213 


• CT 

153 


ftftA 

000 


AQC 

085 


185 


AAA 

000 


i f ■ 
214 


■ CT 

153 


AAA 

000 


A A 1 

086 


4 A / 

126 


Tintl-lftC AAA 

32912:185 000 


A + c 

215 


4 t7 

153 


AAA 

000 


Am 

087 


AAA 

200 


AAA 

208 


AAf 

205 


iff 

165 


AA 1 

001 


009 


036 


7flf\fl j AAA i 7 7 

32924:004 133 

• 


A A t 

001 


4 7 7 

173 


Aid 

014 


AAA 

220 


AAA 

009 


001 


141 


014 


220 


169 


231 


32936:198 141 


000 


221 


169 


008 


141 


024 


208 


032 


183 


128 


085 


32948:076 219 


128 


120 


169 


127 


141 


013 


220 


169 


001 


141 


168 


32960:026 208 


169 


000 


141 


018 


208 


173 


017 


208 


041 


127 


248 


^ f% f\ 7 A tit A A ^ 

32972:141 017 


208 


169 


119 


141 


020 


003 


169 


140 


141 


021 


213 


32994:003 088 


096 


032 


225 


128 


076 


249 


128 


169 


089 


133 


096 


7aj\a i a^a ■ i ~ 

32996:252 160 


000 


133 


251 


169 


000 


145 


251 


200 


208 


251 


200 


33008:230 252 


166 


252 


224 


12B 


208 


243 


096 


169 


016 


160 


080 


7«AH n AAA * r* ^ 

33020:000 153 


000 


064 


153 


000 


065 


153 


000 


066 


153 


000 


035 


7 7 A 7 A A 1 7 AAA 

33032:067 200 


208 


241 


169 


022 


141 


248 


067 


169 


006 


153 


163 


33044:000 216 


153 


000 


217 


153 


000 


218 


153 


000 


219 


200 


013 


33056:208 241 


032 


182 


137 


032 


043 


129 


076 


187 


129 


032 


180 


33068:133 139 


169 


001 


133 


002 


169 


050 


141 


255 


207 


172 


079 


^ ^ A A A AAA rt & ~^ 

33080:255 207 


162 


000 


032 


239 


139 


232 


224 


151 


240 


005 


150 


33092:136 192 


030 


208 


243 


173 


255 


207 


024 


105 


020 


141 


010 


771 A | ftPf A A7 

33104:255 207 


AA 4 

201 


AA a 

200 


tit 

144 


A At* 

225 


169 


01Q 


141 


255 


207 


174 


220 


33116:255 207 


4 J A 

160 


AAA 

200 


A 7 A 

032 


A 7 A 

239 


139 


136 


232 


224 


151 


208 


227 


33128:247 173 


ice 

255 


207 


A A 1 

024 


1 A t? 

105 


AAA 

020 


did 

141 


Apr 

255 


207 


201 


151 


042 


77 i j a 4 ■ j nnn 

33140: 144 229 


169 


t AA 

190 


141 


n r r 

255 


A A 7 

207 


172 


255 


207 


162 


000 


199 


771 CO» ft9'\ A7A 

33152:032 239 


4 7A 

139 


232 


AA I 

224 


art 

151 


AAA 

240 


005 


200 


192 


200 


208 


142 


T 7 H 1 1 * 1 1 7 7 

33164:243 173 


255 


AA 7 

207 


a r i 

056 


A77 

233 


020 


141 


255 


207 


201 


022 


105 


77J 71 _ 4 7/ Anp 

33176:176 225 


i * a 

169 


AAA 

020 


141 


Art* 

255 


207 


174 


255 


207 


160 


030 


123 


77| flfl. A7A A7B 

33188:032 239 


4 7A 

139 


AAA 

200 


A7 A 

232 


A A 1 

224 


151 


AAA 

208 


247 


173 


255 


207 


167 


33200:024 105 


AAA 

020 


J 1 4 

141 


AC P 

255 


AA 7 

207 


AA d 

201 


d r d 

151 


,ii 

144 


AAA 

229 


A A J 

096 


J69 


126 


T7H 1^ ftfl/ i 77 

33212:096 133 


Af 1 

252 


4 1 ft 

169 


A 7 A 

032 


1 77 

133 


254 


d 1 A 

160 


AAA 

000 


133 


251 


133 


142 


33224:253 177 


APi 

251 


145 


AC 7 

253 


AA A 

200 


AAA 

208 


A t\ A 

249 


A7 A 

230 


HP A 

252 


A7 A 

230 


254 


086 


ttiti .in nen 

33236:166 252 


in 
224 


1 IT 

127 


lAn 

208 


17ft 

239 


i TT 

177 


251 


145 


1CT 

253 


AAA 

200 


4 AA 

192 


A A i 

0B6 


7T*i*n.ftii iftn 

33248:064 20B 


in 
247 


ATI 

032 


155 


( Tft 

139 


A 7. A 

032 


166 


4 If 

135 


A 7 A 

032 


i t r 

145 


t A 7 

143 


4 A 1 

186 


77^/ A . i J A AA7 

33260: 169 007 


141 


A A I 

021 


AAA 

208 


17 7 

173 


A 7 A 

030 


AAA 

208 


A 7 1 

076 


AAA 

212 


140 


173 


002 


33272:000 220 


141 


252 


207 


041 


001 


208 


043 


032 


030 


139 


026 


33284:240 003 


032 


186 


138 


173 


253 


207 


201 


030 


208 


003 


142 


33296:076 173 


130 


173 


254 


207 


201 


150 


208 


003 


076 


173 


048 


33308:130 238 


254 


207 


206 


253 


207 


173 


252 


207 


141 


249 


241 


33320:207 076 


173 


130 


173 


252 


207 


041 


002 


208 


037 


032 


042 


33332:030 139 


240 


003 


032 


186 


138 


173 


253 


207 


201 


200 


062 


33344:240 107 


173 


254 


207 


201 


000 


240 


100 


238 


253 


207 


236 


33356:206 254 


207 


173 


252 


207 


141 


249 


207 


076 


173 


130 


047 


33368:173 252 


207 


041 


004 


208 


037 


032 


050 


139 


240 


003 


194 


33380:032 186 


138 


173 


253 


207 


201 


030 


240 


063 


173 


254 


002 


33392:207 201 


000 


240 


056 


206 


254 


207 


206 


253 


207 


173 


018 


33404:252 207 


141 


249 


207 


076 


173 


130 


173 


252 


207 


041 


184 



33416:008 208 034 032 050 139 240 003 032 186 138 173 099 

33428:253 207 201 200 240 019 173 254 207 201 150 240 189 

33440:012 238 254 207 238 253 207 173 252 207 141 249 031 

33452:207 032 155 139 162 255 160 000 200 208 253 232 127 

33464:208 250 032 024 136 032 144 136 032 036 137 032 103 

33476:029 135 032 030 139 208 008 032 050 139 20B 003 185 

I 33488:032 181 133 032 217 130 076 247 129 173 030 208 004 




33500:041 001 208 001 096 206 199 207 104 104 032 200 083 

33512:143 174 199 207 232 169 032 157 040 064 076 212 145 

33524:140 173 241 207 010 141 207 207 176 00B 169 000 131 

33536:141 206 207 076 011 131 169 001 141 206 207 173 133 

33548:207 207 024 105 013 141 014 208 173 206 207 105 086 

33560:000 024 106 106 141 206 207 173 016 208 041 127 099 

33572:013 206 207 141 016 208 173 240 207 024 105 041 0B1 

33584:141 015 208 169 001 141 046 208 169 023 141 255 029 

33596:067 162 254 154 173 021 208 141 205 207 169 129 158 

3360B: 141 021 208 032 081 143 032 081 143 032 081 143 186 

33620:169 000 141 202 207 169 004 141 203 207 173 203 111 

33632:207 074 144 008 169 010 141 204 207 076 113 131 044 

33644:169 020 141 204 207 173 203 207 141 245 207 169 146 

33656:010 141 244 207 032 252 135 172 242 207 174 204 092 

33668:207 204 240 207 208 OOfl 236 241 207 208 003 076 129 

33680:154 131 032 055 134 208 003 238 202 207 173 204 093 

33692:207 024 105 020 201 160 240 010 201 150 240 006 184 

33704:141 204 207 076 113 131 238 203 207 172 203 207 222 

33716:192 020 208 166 160 000 185 195 132 032 210 255 143 

33729:200 192 021 208 245 169 000 174 202 207 032 205 255 

33740:189 169 032 032 210 255 169 042 032 210 255 169 176 

33752:032 032 210 255 169 000 174 200 207 032 205 189 129 

33764:169 032 032 210 255 169 061 032 210 255 169 032 062 

33776:032 210 255 173 200 207 141 245 207 173 202 207 188 

33788:141 244 207 032 252 135 174 242 207 173 243 207 205 

33800:032 205 189 169 032 032 210 255 169 146 032 210 153 

33812:255 173 200 207 201 070 240 006 024 105 005 141 111 

33824:200 207 173 242 207 056 233 010 141 242 207 141 043 

33836:221 207 173 243 207 233 000 141 243 207 013 221 105 

33B48:207 240 020 144 018 162 253 160 000 200 208 253 129 

33860:232 208 250 162 011 032 035 134 076 034 132 234 072 

33872:169 000 141 021 208 169 096 133 252 169 032 133 067 

33884:254 160 000 133 251 133 253 177 253 145 251 200 254 

33896:208 249 230 252 230 254 166 252 224 127 208 239 183 

33908:177 253 145 251 200 192 064 208 247 169 007 141 122 

33920:046 208 173 254 067 141 255 067 162 039 169 032 205 



XX9X?*1S7 l?fl 0A4 70? ??4 

JJ7JAilJf Uv Vul tV* Aa" 


007 


^OR 


? 4R 'AO 
ftia iou 


006 

VVO 


IRS 

lOJ 


?'6 

4lD 


14 e 

llw 


XX944'IX7 1ST OSS 1XR IRS 

JJ7TT.1JA . .__ 100 10J 


??x 

44J 


IX? 

104 


ISX 0A9 

1JO .-- 


1XR 

100 


1XA 

1JO 


19? 

1 7A 


0S9 

VJ7 


XX9S6-7SS 70R 7X9 OX? 14S 

JJ'JUi 4U0 407 vOft It. 


14X 

l^J 


17X 

l/J 


70S 707 

4UJ 4U/ 


0SA 

UJO 


04? 

Vlft 


141 

111 


?1fl 
410 


33968*021 ?0R OX? 1 66 1XS 

tlv7Dbi\/4l 4VO VJ» iDO IOJ 


169 

107 


000 

VVV 


174 701 

1 / T ft V 1 


?07 

ftv / 


1S7 
i j / 


0R0 
vov 


190 

1 7V 


33980:064 238 201 707 076 


71? 

4.1 4 


140 

i IV 


1S9 019 

1 JI V 1 I 


017 

V 1 / 


017 
VI / 


017 

VI* 


019 

VI 7 


33992:029 029 029 029 079 


029 

U4T 


079 

v4 J 


079 0?o 

V4 1 


01R 

vlo 


066 
voo 


079 

V/ 7 


1'? 
1 ■ ft 


X4004-07R ORS ORX 0X7 010 

OiUVIiV/O VOJ VOO VOft V1V 


0*0 


010 


0A0 0Q0 


1 10 
1 IV 


1X0 

10V 


010 

V7V 


999 

AAA 


X401A«0flO 170 0S0 090 110 
jtviOiVdv i/v vjv u~u nv 


1 AO 
Law 


) 1? 

lift 


7(7 7(17 
41/ AV/ 


110 

ItV 


71 A 
AlO 


?A1 


9S1 
ftJl 


71A?0»7AA AX9 171 9A1 
oiVftOiftUU UOft U33 IOt! ftvl 


AA7 


ft40 


AQ7 979 
070 ftdft 


A79 
00ft 


ABC 

Ojj 


• 7 J 
»o4 


111 


'ifllA»?A1 AA? 7AQ f\QS 7A7 
j*>U4U:zU1 00i a0o 0o3 tUi 


7(\7 


ATI 
004 


ACC IT J 

0j3 1o4 


OA 1 

ftOl 


AAA 

00a 


AAQ 

aUo 


-T^ 


7iA e .?»A7t 177 lit 7A7 A7i 
oivjftlQ/o wo ftlo £Vf 0i4 


10 J 


A1 0 

017 


I/O ATI 

16o 00ft 


-EC 

03j 


1 T * 

.04 


7A1 
ftOl 


1 XI 
lo4 


TIAAl'AA? 7AQ At? 977 779 

j*hjo*>: uu*. ftuo uoa AOi 


nx*i 
Oi* 


033 


ITI 1A« 


AAA 
00a 


7AQ 
aOB 


ACT 

VJO 


1 c.7 
13/ 


X407A-17X 717 907 074 10S 
. " . ■ j . . . ill ivl 1VJ 


009 


170 

1 IV 


17X 7IA 

I/O ftlO 


907 

ftV/ 


071 
VaI 


1 VJ 


199 

144 


T4f)RR'009 1AR OX? OSS 1X4 

»TVOOiVV7 100 VOft VJJ 101 


?01 


007 

Vvft 


?0fl OX? 

AvO UOft 


9A0 
»vv 


900 

aVV 


OX* 1 

VOA 


0*7 

VoO 


X11A0-0SS 1X1 701 00? 70P 
Oil VV. VJJ 101 ftVl VVft aVo 


o?x 

V4 0 


177 

l/J 


717 707 

All ftU/ 


OSA 
VJO 


?X7 
40v 


009 

VV7 


0X1 
U01 


X411?«170 0X9 OSS 1X4 701 
JllUt »/V VOft UJJ 101 4V1 


007 


?0H 

ftVO 


009 1XA 
vv7 100 


1XA 
IOO 


OX? 

VOft 


OSS 

VOJ 


710 
ftl V 


X4174-1X4 701 00? 740 001 

JliftlilOl AVI VVft ftlV VV1 


09A 

UTG 


174 


?17 707 

41/ iwl 


17? 

1/4 


71A 

AlO 


707 

ftV/ 




X11XA>?7A ?11 707 90P 017 
O^lOOJftOO 41I ftl/7 aVC Vlft 


1 S? 

— 


0*^1 


10S 010 

ivj uiy 


7AS 

AVJ 


^lO 

AlV 


907 
ftU/ 


117 

110 


34148:208 003 076 245 130 


162 


on 


032 035 


134 


169 


003 


028 


34160:133 002 169 255 141 


246 


207 


141 214 


207 


172 


216 


167 


34172:207 200 238 246 207 


173 


246 


207 201 


019 


240 


044 


048 


34184:201 010 144 006 206 


214 


207 


076 149 


133 


238 


214 


142 


34196:207 173 217 207 024 


109 


214 


207 141 


215 


207 


173 


194 


34208:217 207 056 237 214 


207 


170 


202 232 


032 


239 


139 


008 


34220:236 215 207 208 247 


076 


125 


133 096 


172 


253 


207 


043 


34232:174 254 207 192 040 

* ■ *- •* ** * * ' 1 — ■ A, V ' A to * . 


240 


016 

VI D 


19? 0X0 

174 VJV 


740 

41V 


01? 

VIA 


9?4 

bfti 


?1X 

410 


34244' 150 740 008 152 056 


233 


020 

V4V 


1AR OX? 

ISO VJ4 


7X0 

40V 


132 

1 J4 


17? 

1/4 


2SX 

4 J V 


34?S6'?SX 707 174 254 207 


192 

17 4 


030 

v Jv 


740 0?1 

ATv vAl 


774 

441 


000 

VVV 


740 

41V 


70? 

4V4 


X4?6R'0t7 774 010 740 OH 

viiDOi VI / Aftl V1V »*V V 1 J 


1S7 

1 J4 


0S6 

v JO 


7XX 010 

4J0 Vlv 


1AR 

1 00 


1X8 

1 JO 


OSA 

VJO 


001 

VV 1 


X4?R0<?XX 010 170 OX? 7X0 

JTtQVi iO J vlv 1'V VJft tJv 


1X7 
i . - 


17? 

1/4 


7SX ?07 

4J0 aU' 


174 

i/i 


?S4 

4J1 


?07 

4V / 


00? 

VV4 


X4?9?> 19? 0X0 740 071 774 

U'i'ti lli VJV ilV Vil ftftl 


ISO 

1 Jv 


740 

41V 


017 ??4 

VI/ 441 


140 

11V 


?40 

41V 


on 

VI 0 


1RX 

1 0 J 


X4Xfl4'1S? 0S6 7XX 010 16R 

OUVlilJft VJO AJJ Vlv 1DD 


1 TO 
1 JO 


074 

VAT. 


10S 010 

1 v J Vlv 


no 

1 1 V 


OX? 

V JA 


7X0 

4JV 


04R 
vio 


X4X1A-1X? 17? 7SX 707 174 

■ ..-1 1/4 AJ« ivi A/T 


7S4 
- - ~ 


4 v / 


19? 700 

i 7ft ivv 


240 

4TV 


01 1 

V 1 1 


19? 

174 


198 

1 70 


X4X?Pt100 ?40 007 ??4 ISO 

.**-_-■:. . VV/ ftftl lJV 


910 

4*H. 


OOX 

uUo 


0X7 77fi 
UOa # aOU 


1X7 

104 


09A 
V70 


t go 

107 


791 

441 


X1X10-00A 0A1 701 0S7 740 
OlOlv»VVV V07 iVl VJ/ ftlV 


001 


9S1 
4J1 


000 0A4 


09A 

V70 


1A9 

107 


01P 

UIO 


709 
ftV7 


X4X*%7i157 AAA AA1 9A9 A7t 


ATP 

OiS 


1 7 J 

li4 


tc'j A77 
IJ4 U/4 


1 TO 
100 


A79 
v/4 


i to 

l07 


A70 

V07 


717iliAQt tXX 759 ItO AAA 
-njoilUVa ftjft 107 UUU 


■ TT 

1-J 


a31 


1 70 A77 
loo 0/a 


A7i 

V/1 


All 

U/t 


1 7A 
1/0 


Ooo 


uniiin A77 A7i A7/i a7h 
d*»j/6:ljft 0/* 0/4 0/4 074 


1 LQ 
.00 


ftOft 


77ft ore 
a74 -J- 


A * A 

a40 


At 1 

014 


162 


AC A 

zso 


XlXRfl.l'l 071 10^ OOfl 1X7 




1 11 

11*t 


919 77A 


9*57 


A7A 
V/O 


A7Q 
via 


APt 

. - - 


TllOO'171 17A 19? ?"*S 7flA 


01 A 


1 A* 
10- 


7C1 A^4 
Awl Va** 


10S 

IVJ 


0A1 
vDt 


1XX 

100 


0*9 

V17 


34417-7S1 165 252 105 00' 

OTTltl tJl low .Jk IvJ vv« 


1XX 


25? 

A J4 


076 097 

V 7 D v 7 ( 


1X4 

1 JT 


104 

1 VI 


041 

VI 1 


1RX 

1 0 J 


34424:007 168 136 192 255 


240 


009 


230 251 


208 

** v w 


247 


230 

ft» w V 


245 


34436:252 076 122 134 104 


041 


003 


170 169 


192 


141 


247 


247 


34448:207 202 224 255 240 

W 1 1 r w 1 to V ' to V to to to I to V W to 1 V 


009 


078 


247 207 


078 


247 


207 


04! 


34460:076 145 134 200 i73 


247 


207 


049 251 


141 

ill 


221 


207 

ftvl 


159 


X447?-'7X 747 707 041 001 

J'T/ti ilu i7( iv/ VtI vvl 


?0R 


01S 

vlw 


07R 747 

V( O AT ' 


707 

ftV r 


07R 

via 


947 

fti/ 


1?S 
i ft j 


34494- 707 078 771 707 07R 


771 

44 i 


707 

Av f 


076 168 

V / D 1 JO 


1X4 

1 Jl 


104 

1 VI 


170 

1 / V 


003 

VV J 


X449A-104 1AR 17X 7?1 707 

J"*lO» JVl 1DU 1'J 441 4Vf 


096 


169 

107 


000 141 

VVV 111 


??0 

44V 


707 

4V ' 


16° 
1 o • 


01° 

V 1 i 


34508:255 141 2!9 207 174 


220 

44V 


20 7 

4V ■ 


232 236 

kVft ft* v w 


21° 

41 i 


207 

4V * 


240 

41V 


201 

AV 1 


34520:061 173 220 207 024 

V ~ - ' VtVW4 ft i w ftk ^ V 4> W ' V ft. ~ 


109 

IV 7 


910 

41 1 


207 106 

m V i ft V W 


141 

IT* 


718 

AID 


207 

4V ( 


060 

vuv 


34532:141 245 207 141 244 


207 


032 


252 135 

v ft w W 


173 

1 ' w 


242 

414 


207 

4V / 


150 

ft W V 


34544:056 237 222 207 141 

^ * - W . - ' to to ftj to V f ft ■ ft 


221 

to to • 


207 


173 243 


907 
»» . 


' 1 37 


99X 

- — - 


054 


34SSA-707 01X 771 707 740 

v~JJOt4Vf vlw 441 4v' t"v 


0?A 

W40 


144 
i ii 


009 17' 

VV7 1 / •/ 


?1fl 
ftlO 


?0 7 

4Vt 


141 

in 


010 

V 1 V 


34568:219 207 076 208 134 


173 


218 


207 141 


220 


207 


076 


046 


34580:208 134 173 220 207 


141 


218 


207 096 


177 

I/O 


241 


207 


197 


34592:056 237 254 207 144 


003 


076 


04B 135 


173 


254 


207 


034 


34604:056 237 241 207 141 


245 


207 


141 244 


207 


032 


252 


206 


34616:135 173 242 207 141 


236 


207 


173 243 


207 


141 


237 


094 


34628:207 173 240 207 056 


237 


253 


207 144 


003 


076 


088 


167 



34640:135 


173 


253 


207 


056 


237 


240 


207 


141 


245 


207 


141 


018 


34652:244 


207 


032 


252 


135 


173 


242 


207 


024 


109 


236 


207 


112 


34664:141 


222 


207 


173 


243 


207 


109 


237 


207 


141 


223 


207 


117 


34676:032 


198 


134 


173 


218 


207 


074 


074 


074 


170 


168 


169 


015 


34688: 160 


157 


127 


064 


202 


224 


255 


208 


248 


173 


218 


207 


067 


34700:041 


007 


170 


189 


158 


135 


153 


128 


064 


169 


032 


153 


003 


34712:129 


064 


153 


130 


064 


096 


101 


116 


117 


097 


246 


234 


163 


34724:231 


160 


173 


027 


212 


041 


015 


201 


013 


176 


247 


024 


149 


34736:105 


001 


141 


241 


207 


173 


027 


212 


041 


007 


024 


105 


180 


34748:001 


14! 


245 


207 


169 


020 


141 


244 


207 


032 


252 


135 


190 


34760:173 


242 


207 


141 


240 


207 


173 


241 


207 


041 


001 


208 


7XX 

400 


34772:009 


173 


240 


207 


056 


233 


010 


141 


240 


207 


173 


241 


094 


34784:207 


141 


245 


207 


169 


010 


141 


244 


207 


032 


252 


135 


166 


34796:173 


242 


207 


141 


241 


207 


173 


240 


207 


024 


105 


030 


178 


34808:141 


240 


207 


096 


16? 


000 


141 


242 


207 


162 


008 


078 


147 


34820:245 


207 


144 


004 


024 


109 


244 


207 


106 


110 


242 


207 


06! 


34832:202 


208 


240 


141 


243 


207 


096 


096 


162 


006 


032 


086 


199 


34644:136 


208 


049 


032 


106 


136 


208 


044 


173 


027 


212 


201 


024 


34856:064 


176 


008 


169 


014 


157 


183 


207 


076 


080 


136 


201 


231 


34868:128 


176 


008 


169 


013 


157 


183 


207 


076 


080 


136 


201 


050 


34880:192 


176 


008 


169 


Oil 


157 


183 


207 


076 


080 


136 


169 


092 


34892:007 


157 


is: 


207 


202 


224 


255 


208 


197 


096 


189 


055 


008 


34904:138 


024 


125 


062 


138 


141 


250 


207 


008 


104 


041 


001 


047 


34916:141 


251 


207 


076 


085 


139 


189 


055 


138 


056 


253 


062 


216 


34928: 138 


144 


Oil 


141 


250 


207 


169 


000 


141 


024 


212 


076 


089 


34940:085 


139 


189 


062 


138 


056 


253 


055 


138 


141 


250 


207 


045 


34952:169 


000 


141 


251 


207 


076 


085 


139 


238 


182 


207 


173 


212 



HIGH 




34964:182 
34976:207 
34988:138 
35000:150 
35012:076 
35024: 138 
35036:254 
35048:041 
35060:055 
35072:076 
35084:138 
35096:254 
35108:162 
35120:059 
35132:138 
35144:144 
35156:105 



207 205 181 
162 006 189 
201 030 208 

208 003 076 
030 137 189 
201 200 240 
062 138 222 
004 208 023 
138 201 000 
030 137 1B9 
201 200 240 
055 138 254 
006 169 128 
105 014 008 
074 170 040 
003 013 247 
041 072 138 



207 240 001 
183 207 041 
003 076 030 
030 137 254 
183 207 041 
073 189 055 
055 138 076 
189 062 13B 
240 036 222 
1B3 207 041 
013 189 055 
062 138 202 
141 247 207 
072 138 010 
173 247 207 
207 141 016 
010 170 104 



096 169 

001 208 

137 18? 
055 138 

002 208 

138 201 
030 137 
201 030 
055 138 
00B 20B 
138 201 
224 255 
189 055 
170 104 
073 255 
208 IB? 
157 003 



255 141 
029 189 
055 13B 
222 062 
023 189 
000 240 
189 183 
240 043 
222 062 
020 189 
150 240 
208 128 
138 010 
157 002 
045 016 
062 138 
208 138 



182 166 
062 108 
201 042 
138 121 
062 007 
066 157 

207 119 
189 064 
138 215 
062 070 
006 247 
096 246 
176 128 

208 071 
208 170 
024 184 
074 024 



35168:170 078 247 207 202 224 255 208 194 076 134 137 180 
35180:024 105 014 072 138 010 170 104 157 002 208 138 226 
35192:074 170 173 016 208 013 247 207 141 016 208 076 133 
35204:080 137 206 246 207 208 035 169 010 141 246 207 232 
35216:173 248 207 201 021 240 008 169 021 141 248 207 236 
35228:076 164 137 169 020 141 248 207 162 006 157 249 100 
35240:067 202 224 255 208 248 173 141 002 201 001 240 082 
35252:249 096 162 006 169 007 157 040 208 169 020 157 084 
35264:249 067 202 224 255 208 241 162 036 169 003 157 117 
35276:120 216 202 224 255 208 248 162 039 169 032 157 188 
35288:000 064 157 040 064 157 120 064 157 080 064 202 105 
35300:224 255 208 239 160 000 185 069 138 032 210 255 155 
35312:200 192 Oil 208 245 160 000 185 088 138 032 210 117 
35324:255 200 192 043 208 245 160 007 185 080 138 153 070 
35336:000 080 136 192 255 208 245 200 185 131 138 032 018 
35348:210 255 200 192 040 208 245 160 000 185 170 138 231 
35360:032 210 255 200 192 016 208 245 160 000 185 080 023 
35372:142 153 000 069 200 208 247 173 030 208 096 010 044 
35334:030 040 060 080 110 130 040 080 170 050 090 140 052 
35396:160 158 019 017 017 017 083 079 078 065 082 058 133 
35408:126 126 126 126 096 096 096 096 154 019 017 017 151 
35420:076 069 0B6 069 076 058 032 032 032 032 032 032 206 
35432:032 032 032 032 032 032 032 032 032 032 032 032 232 
35444:032 032 032 032 032 032 032 032 032 032 032 032 244 
35456:032 032 032 005 019 083 067 079 082 069 058 032 206 
35468:048 048 048 048 048 048 032 032 032 032 032 032 108 
35480:072 073 071 072 032 083 067 079 082 069 058 032 174 
35492:048 048 048 048 048 048 153 019 017 083 0B4 065 105 
35504:077 073 078 065 058 032 218 218 218 218 173 249 061 
35516:207 041 001 208 009 238 254 207 206 253 207 076 047 
35528:247 138 173 249 207 041 002 208 009 238 253 207 124 
35540:206 254 207 076 247 138 173 249 207 041 004 208 174 
35552:009 206 254 207 206 253 207 076 247 138 173 249 145 
35564:207 041 008 208 006 238 254 207 238 253 207 032 087 
35576:155 139 162 255 160 000 200 208 253 232 208 250 166 
35588:032 024 136 032 144 136 032 036 137 032 217 130 068 
35600:032 030 139 208 165 032 050 139 208 160 032 181 112 
35612:133 096 173 254 207 024 109 253 207 141 250 207 034 
35624:008 104 041 001 141 251 207 076 085 139 173 254 240 
35636:207 056 237 253 207 144 Oil 141 250 207 169 000 142 
35648:141 251 207 076 085 139 173 253 207 056 237 254 095 
35660:207 141 250 207 169 000 141 251 207 173 250 207 231 
35672:056 233 010 141 250 207 173 251 207 233 000-141 198 
35684:251 207 048 028 173 250 207 013 251 207 240 020 203 
35696:173 250 207 056 233 020 141 250 207 173 251 207 232 
35708:233 000 141 251 207 076 102 139 096 169 002 133 137 
35720:002 162 159 160 031 032 239 139 200 192 200 208 06B 
35732:248 202 224 150 208 241 096 173 254 207 010 176 033 
35744:029 105 015 141 000 208 173 016 20B 041 254 144 214 
35756:002 009 001 141 016 208 173 253 207 024 105 041 072 
35768:141 001 208 076 207 139 024 105 015 141 000 208 169 
35780:173 016 208 009 001 141 016 208 076 178 139 169 250 
35792:002 133 002 174 254 207 172 253 207 032 055 134 041 
35804:201 001 208 005 162 012 032 035 134 174 234 207 109 
35816:172 253 207 032 239 139 096 072 152 072 138 072 084 
35B28:169 096 133 252 169 000 133 251 13B 072 074 074 013 
35840:170 152 072 074 074 074 168 202 224 255 240 014 183 
35852:165 251 024 105 008 133 251 144 242 230 252 076 101 
35864:007 140 136 192 255 240 016 165 251 024 105 064 083 
35876:133 251 165 252 105 001 133 252 076 026 140 104 138 



35888:041 007 168 136 192 255 240 009 230 251 20B 247 240 

35900:230 252 076 051 140 104 041 003 170 169 063 141 220 

35912:247 207 165 002 010 010 010 010 010 010 202 224 155 

35924:255 240 012 074 074 056 110 247 207 110 247 207 131 

35936:076 082 140 200 072 173 247 207 049 251 145 251 197 

35948:104 017 251 145 251 104 170 104 168 104 096 173 003 

35960:025 208 141 025 208 041 001 240 077 169 012 160 147 
35972:059 162 024 142 022 208 141 033 208 140 017 208 216 
35984:141 024 208 173 018 208 201 081 144 016 169 000 247 
35996:141 018 208 173 017 208 041 127 141 017 208 076 251 
36008:206 140 169 000 141 033 208 169 200 141 022 208 013 
36020:169 027 141 017 208 169 004 141 024 208 169 081 002 
36032:141 018 208 173 017 208 041 127 141 017 208 076 031 
36044:049 234 104 168 104 170 104 064 169 070 141 254 043 
36056:207 169 120 141 253 207 162 039 169 032 157 120 200 
36068:064 202 224 007 20B 248 032 155 139 032 029 135 167 
36080:173 199 207 201 007 240 057 032 248 141 032 024 009 
36092:136 032 144 136 032 036 137 162 255 160 000 200 146 
36104:208 253 232 208 250 162 249 160 000 200 208 253 087 
36116:232 208 250 173 000 220 041 016 208 220 162 013 227 
36128:169 032 157 040 064 232 224 039 208 248 173 030 112 
36140:208 076 247 129 162 039 169 013 157 040 216 202 166 
36152:224 255 208 248 160 000 162 000 189 041 064 157 228 
36164:040 064 232 224 037 208 245 185 037 142 141 077 164 
36176:064 152 072 160 000 162 000 200 208 253 232 208 255 
36188:250 104 168 173 000 220 041 016 240 010 200 192 170 
36200:043 208 211 160 000 076 062 141 162 000 189 007 083 
36212:064 221 031 064 240 018 144 021 162 005 189 007 002 
36224:064 157 031 064 202 224 255 208 245 076 145 141 148 
36236:232 224 006 208 225 162 005 189 031 064 157 192 043 
36248:207 202 224 255 208 245 173 000 220 041 016 240 135 
36260:249 032 073 145 032 182 137 162 005 189 192 207 233 
36272:157 031 064 202 224 255 208 245 169 096 133 252 164 
36284:169 032 133 254 160 000 133 251 133 253 177 253 088 
36296:145 251 200 208 249 230 252 230 254 166 252 224 045 
36308:127 208 239 177 253 145 251 200 192 064 208 247 219 
36320:032 145 143 169 007 141 021 208 141 201 207 169 016 
36332:040 141 200 207 169 012 141 199 207 076 212 140 188 
36344:162 000 189 006 142 032 210 255 232 224 032 208 148 
36356:245 096 005 019 017 029 029 029 029 029 029 029 077 
36368:029 029 029 029 029 029 029 029 029 080 082 069 252 
36380:083 083 032 066 085 084 084 079 078 135 129 141 083 
36392:133 160 143 150 133 146 032 046 046 032 016 018 071 
36404:005 019 019 032 002 021 020 020 015 014 032 020 015 
36416:015 032 016 012 001 025 032 001 007 001 009 014 229 
36428:032 046 046 032 000 000 000 000 000 000 000 000 232 
36440:000 000 000 000 000 000 000 000 000 000 000 000 08B 
36452:000 000 048 000 000 048 000 000 252 000 000 252 188 
36464:000 000 048 000 000 048 000 000 000 000 000 000 208 
36476:000 000 000 000 000 000 000 000 000 000 000 000 124 
36488:000 000 000 000 000 000 000 000 000 000 000 000 136 
36500:000 000 000 000 000 000 000 000 000 000 000 000 148 
36512:000 000 000 000 000 001 140 000 000 216 000 000 005 
36524:112 000 000 112 000 000 216 000 001 140 000 000 241 
36536:000 000 000 000 000 000 000 000 000 000 000 000 184 
36548:000 000 000 000 000 000 000 000 000 000 000 000 196 
36560:000 000 000 000 000 000 000 000 000 000 000 000 208 
36572:000 000 000 000 000 000 000 000 000 000 096 000 060 
36584:000 240 000 001 248 000 000 240 000 000 096 000 033 
36596:000 000 000 000 000 000 000 000 000 000 000 000 244 



CG 



36608:000 


000 


000 


000 


000 


000 


000 


000 


000 


000 


000 


000 


000 


T/nCi.AAA IJA AAA ATA HAfl OCT 


200 208 250 173 000 220 204 


36620:000 


000 


000 


000 


000 


000 


AAA 

000 


AAA 

000 


AAA 

000 


AAA 

000 


AAA 

000 


AAA 

000 


A 4 ft 

012 


00700. U^l U10 21V i17 107 VJU 


145 240 007 032 210 255 242 


36632:000 


000 


000 


000 


015 


255 


255 


023 


224 


049 


016 


000 


093 


TiOOrti')?') f\lL IfiQ \tt 177 IDA 
36780:232 0/6 10B 144 1/3 loO 


207 032 


210 255 169 157 011 


36644:001 


035 


102 


051 


102 


219 


051 


075 


108 


103 


199 


254 


056 


TiOOOiftT? 11n Ti 8 ! AT*? "7TG 9 c ' 1 e i 
36VY2:032 210 2DD 032 22o 2DD 


20B 010 


173 000 220 041 000 


36656:102 


128 


000 


014 


255 


255 


252 


255 


255 


248 


000 


000 


AAA 

020 


TTrtnlifMi Oil n7i 1 L7 111 

3/004:01o 20o 244 O/o 16/ 144 


201 013 


240 017 201 069 200 


36668:000 


000 


000 


000 


000 


000 


AAA 

000 


AAA 

000 


AAA 

000 


AAA 

000 


AAA 

000 


AAA 

000 


A / A 

060 


77IM1.91I"! flfi? *7A1 "7"? °Art A(1T 

j/uio;i4y uw 2V1 u/2 2'rv uuj 


076 131 


144 141 180 207 002 


36680:000 


000 


000 


000 


000 


000 


000 


000 


165 


162 


A AT 

007 


lift 

169 


063 


TTAAO.ATA HIA ACC *I7< AC 1 1 LQ 

37028:0j2 Z10 255 234 056 16V 


010 237 


190 207 010 073 055 


36692:000 


157 


000 


212 


202 


224 


255 


208 


248 


a i n 

169 


141 


1 A 4 

141 


ft 4. ft 

249 


TTAIA.ACC ATI 1 AC AAH 1(1 177 

37040:255 024 105 002 141 ill 


130 141 


251 138 141 004 149 


36704:024 


212 


169 


005 


141 


005 


it *i 


169 


218 


ill 

141 


A A I 

006 


ft i ft 

212 


074 


TTACA.'it ITT IDA AAT All HTT 

37052: 141 173 180 20/ 056 *.3- 


069 074 


073 001 141 1B1 181 


36716:16? 


150 


141 


001 


212 


169 


139 


141 


000 


212 


169 


017 


092 


T ~T i"i 1 i ftA^ 4fft AAl 47T " A A Aflf 

37064:207 169 001 133 204 QY6 


014 147 


017 017 159 018 102 


36728:141 


004 


212 


160 


140 


162 


000 


232 


208 


OCT 

iJJ 


200 


208 


248 


T T A 1 / A ft ft Aftft AftA Aftft Aftfl AOO 

37076:029 029 029 029 029 029 


029 032 


032 032 032 032 063 


36740:250 


169 


016 


141 


004 


212 


232 


208 


253 


200 


208 


HP * 

250 


ftft ~* 

227 


TTAOQ.AT1 ATA A 1 7 1C1 < CT 1 C.7 

37088:032 032 01/ 15/ 15/ 15/ 


157 157 


157 157 032 211 111 


36752:096 


160 


000 


169 


000 


153 


000 


212 


200 


i nn 

192 


a An 

008 


ft Aft 

208 


AA f 

006 


T71rtrt-7A0 7*1 7AT 107 "T7 'i- 
J/lUvIiUO ivl ivO 17/ UOi HO 


032 045 


032 005 032 194 027 


36764:246 


169 


143 


141 


024 


212 


169 


a a n 

008 


141 


005 


ft 4 ft 

212 


■ i n 

169 


AAT 

003 


77119«AQ0 AT? 911 A7* 1 HAS A7R 


069 032 


211 084 069 086 066 


36776:243 


141 


006 


212 


169 


129 


A 4 1 

141 


AA J 

004 


212 


4 1 ft 

162 


Ace 

255 


i ii 

142 


1 oo 

192 


T71?l>A/.0 A7R (1H7 (117 099 fl?9 
i}/1Z b iUQ7 U/0 vOO yiO U47 UiT 


029 029 


f r - n Ann Apt n i r n a a n 

029 029 029 159 097 


36788:001 


212 


202 


160 


255 


136 


192 


A A 4 

001 


ft Aft 

208 


251 


224 


AA 1 

001 


IT 1 

231 


7717A-A1P AT? AT? AT? AT? AT? 


032 032 


■ ■ -* A A ^ A I A 4 A C 4 

013 013 013 013 054 


*i AAA AAA 

36800:208 


All 

241 


4 t f\ 

169 


128 


141 


004 


212 


096 


162 


000 


1 LQ 
l07 


AAA 


100 


T711R |A n (1?9 0?9 0?9 0?9 029 


029 211 


a n A A i A A ( Aj A f ft ft A A 

080 069 069 068 200 


4] Ai A 1 

36812:157 


AAA 

000 


212 


n at At 


224 


a An 

008 


208 


248 


169 


143 


.4. 


A" J. 


1 70 

Wo 


T7IAA-AT? AAA A10 f\AF AS7 All 
O/lOV.Uwi UtU Ut7 ytj UJ/ VM 


063 032 


159 000 013 013 072 


36824:212 


tin 

169 


017 


111 

141 


AAP 

005 


Aj J A*j 

212 


169 


"it T 

213 


4 1 1 

141 


AA ' 

006 


HI H 

212 


1 LQ 
107 


U7V 


T717?.A!T A?0 A?9 A?9 A?9 fi?9 
jHlLiVli Vti vLl Ui7 Ui7 Vi7 


029 158 


197 065 083 089 063 


36836:002 


141 


003 


212 


169 


100 


141 


AAA 

002 


212 


169 


A A C 

005 


4 J 4 

141 


A 1 C 

245 


TT < O I . A fl T 1AA AH ADT 1 i. D AtT 

37184:047 200 065 082 068 063 


032 159 


000 120 173 013 062 


36848:001 


212 


169 


135 


141 


000 


212 


4 I fi 

169 


065 


141 


AA 1 

004 


212 


165 


T7l0t»"?A AAO 1 ?0 111 A1T ??A 
3/176:^4.0 UOY uT 111 UlO l£v 


169 000 


141 026 208 169 241 


36860:169 


252 


160 


000 


162 


000 


200 


*\ Aft 

208 


ft B 9 

253 


ft ^ft 

232 


ft An 

206 


HCA 

250 


All 

042 


T79A0»9T1 111 A?1 AAT 1 AO A10 
j/iUBi/jT 141 vil WO 107 y*7 


141 020 


003 088 169 021 123 


36872:024 


105 


001 


208 


Air* 

245 


169 


A 1 i 

064 


4 1 4 

141 


004 


212 


Art i 

096 


162 


i cn 

15? 


T779Ai1l1 A?l ?AB 1A0 A?7 111 
o/iiUllnl Ui4 £\Ja 107 y^/ 1t1 


017 208 


169 199 141 000 00B 


36884:000 


142 


033 


208 


142 


032 


208 


189 


206 


144 


240 


007 


035 


37232:221 169 004 141 136 002 


169 000 


141 021 208 032 076 


36896:032 


210 


255 


232 


076 


027 


144 


234 


173 


190 


207 


105 


125 


37244:019 144 169 064 141 136 


002 169 


198 141 000 221 24B 


36908:048 


032 


210 


255 


169 


157 


032 


210 


255 


032 


228 


255 


135 


37256:169 008 141 024 208 169 


216 133 


252 160 000 132 212 


36920:208 


010 


173 


000 


220 


041 


016 


208 


244 


076 


091 


144 


207 


37268:251 169 006 145 251 200 


208 251 


230 252 166 252 225 


36932:201 


013 


240 


019 


201 


049 


144 


233 


201 


058 


176 


229 


040 


372B0:224 220 208 243 032 183 


128 169 


255 141 182 207 048 


36944:072 


056 


233 


048 


141 


190 


207 


104 


032 


210 


255 


162 


254 


37292:096 253 208 068 069 131 


000 000 


000 000 083 000 056 



• COMMODORE 64 • TRANSFER ALL MAJi 



| LOOK AT DOSOFT'S NEW OFFERINGS 
s AND SEE WHAT'S IN THEM FOR YOU 



• AUTOMATIC • NO USER KNOWLEDGE • 

I 

9 
> 



'The best transfer utility of the lot 9 

Your 64 




13 MegaTransfer Disk 

Our complin Cfrilcction til up*' to disk 
iniWrr lit ill i us liners ij/Zihc mjfor lufTM) 
loading systems, including (be Iju*m 
)<inihinjiti>n picturrAmpc liudcrs. jnd 
Individual n mimes for unusual loaders 

• Now incorporate* IXSKl'S I (previous 
price All) (or your sianilartl load tape 
collection * All transfer is automatic 

• No special hardware or user knowledge 
required • Kfnimi use of disk space 

• Transferred program* reload indcpcndcnily 

• MegaTransfer Disk w ill transfer pn>granis 
winch NO Other utility will handle • An 
essential purchase. IJon'i confuse Megalransfei 
wiih similar unliiics 
which have severely £ "| 
Hulled capabilities obi / 

HMegaUtilityDisk 

A handy t olleciton of uiililic* lo make the 
rx-wofyuur IS41 and&t \er> fx>t \try 
coiwenH-ni • Alphaload l>»sk lurtxt 
Loader Load your programme* ai over 
R >l R lime* the normal rate. Example 2(M) 
hlock* Normal speed HO seconds Wiih 
Alphaload |usi Ml second* • Rut Copy 

H^S^^SSSS^i^ «AV1I SAVEI SAVE! When you buy any .wo HOW to gCl yOUf DoSoftWart 

• Tu Hmi F I IrOaw onv »r l^rirll nn >v raiiis «»t McR^raittfrrDI^.Mfgrf.'iHIty Dbk. All pr<»gram*f^f..mm.xlorr64. 
te^rSdfcta?r^^^fS5^ or^oteHMta&I^Of^ fcgffil _farfaa c teafli oro tic 

sp.i-d • I'm sprite A high class sprue Or save**.* on our Complete collection (l«-p* y ), z ()aktiMKtr avc. 

litirarvitdiior. 100% (cvcr>- pnigram in this Ad. including Blackpool FY 2 Otfc 

machine code. £1 'ISO Profeviional l>isk u>lapeamlMega3ape UK postage included Kumpcadd ~^P 

nwick control 3L> 1 a^ • at only »»}9.99 (single dbk). Oversea* add £1 SO for airmail 



AND SAVE MONEY TOO! 



|| Disk to Tape Plus 

A versatile tolled ion of Disk lo-Tapc routines 
for single and multipart pnigrams Keaiuring 
( mr new tape turho loader with Visible 
Screen and strip * Automatic 

disk lo tape • Outputs pnigram sections Hi 
U|n- as the* load fmm disk * Selective disk 
to tape transfer with or without hoot loader 

• Maximum file length 207 hkicks 

• Not for pnMecledcommcnial disks 

• Professional version available— include* 
mastering scheduler „ ^ _ _ 
and duplication V, I / 
nglus- i.2S.00 

m MegaTapi- 

Anoutstanding new liipe-toTape utility for 
fast loading pnigrams • < oversrt//thc 
major loading systems • No extra hardwan- 
required * All you need is a Commodore (•> 
and one tape deck • No user knowledge 
required • Transferred pnigrams load 
independent I) at lurim\pcrii with Vhlbic 
Screen ami- • DmHc 

\aluc — incorporate* RBS Plus to convert 
fUM slow load pn>grams to turbo load 

• Also handles KrlS and £050 
rastback programs oU^/« 

DoSoft 

You'll Do it Better 
with DoSoft 



• FAST DISK UTILITIES • LOADERS • 3-MIN DISK COPY • FAST DISK FILE COPY • FAST FORMAT • 





IN THE LAST FOUR ARTICLES 
in ihis series I have given all ihe 
initialisation and wedge 
routines needed to add extra 
commands to (he Basic of a C64 
computer. I have also given the 
code to add 12 new commands 
which are; CTL, APPEND, 
CHANGE, DUMP, FIND, 
AUTO, CHAIN, DELETE, 
RENUMBER, MAT, SORT and 
VARPTR. 

This month I am adding a 
further eight commands. These 
are, CATALOG, DISK, EXEC, 
MERGE, GET, PUT, TYPE and 
OLD. Seven of the eight are 
special disk control commands, 
and eight (OLD) is included 
since it is called by the other 
routines. These disk control 
commands add some very 
powerful and useful features to 
a disk based 64 system and will 
save a considerable amount of 
programming time. 

All eight new commands 
require that the wedge and 
initialisation code given in the 
first issue are present in 
memory at the correct 
locations, and that their 
command names and entry 
points are stored in the correct 
tables. These eight commands 
are independent of all the 
previously added commands - 
except APPEND - routines 
from which are required by the 
new routines. Within this 
limitation they can be used 
without the previously added 
code. To ensure that you have 
the wedges and new routines 
correctly positioned. The Basic 
loader at the end of this article 
gives the initialisation routines 
and all commands. 



In next month's issue I wi 
show how to write and add 
your own commands to Basic. 
All the programs used in this 
series are extracted from the 
book Advanced Commodore 
64 Basic Revealed by Nick 
Hampshire and published by 
Collins. 

GET 



Abbreviated entry: G(shift)E 
Affected Basic abbreviations: 

None 

Token: Hex SEE, $OF, Decimal 
238,15 

Modes: Direct and program 
Recommended mode: Either; 
different, effects in direct mode 
and program mode 
Purpose: To input an ASCII file 
on disk into memory wilh line 
numbers created from 1000 in 
steps of 10. GET will read in files 
created by the Commodore 
assembler and SYSRES. Each 
time is read in until a carriage 
return is reached. It is then 
tokenised and entered into 
memory as a program line. 
Syntax: Direct mode; GET 
filename, d - where di is the 
device number (disk only) 

Run mode: as chapter 7GET 
and GET H . 

Errors: Illegal device - if the 
device number specified is less 
than eight Missing file 

Missing file name - if a null 
filename is specified. 
File not found - if the file does 
not exist 

Device not present - connected 
File open error - if 10 files are 
already open 

Disk errors - at the end, the 
disk error channel is read and 
displayed. . 



Use: For editing Commodore 
assembler files or files for the 
use of the EXEC command 
Routine entry point: $8ED1 
Routine operation: The GET 
routine first checks whether 
the computer is in run mode or 
direct. If it is in run mode, then 
the Basic version of GET is per- 
formed. If in direct mode, the 
file parameters are read in and 



checked for a null filename or 
the device not being disk. If 
these checks are OK, the 
message 'reading' filename is 
displayed and the file is 
opened. Each line is then input 
and stored in the input buffer, 
tokenised, and entered into 
memory until the end of file 
marker is reached. The 
program is then re-chained 
and the variable pointers are 
sest to the correct values for the 
program. Finally the disk error 
channel is rad and displayed. 



GET 



1000 
1010 
1020 
1030 
1040 
*C5C 
1060 
1070 
10B0 
1090 
1100 
1110 
1120 
1130 
1140 
H5Q 

1160 
1170 
1180 
1190 
1200 
1210 
1220 
1230 
1240 

::!C 

1260 
1270 



6ET LDA $9D ;CHECK !F DIRECT 
BNE 6ETUN :YES, DIRECT 
JSR t0079 ;GET CURRENT CHAR 
JMP $AB7E ; PERFORM BASIC 'GET' 
GET'JN JSR DPARS :6ET FILE PARAMETERS 
JSR GETHES : 'READING' 
JSR GETQPN ;QPEN FILE 
JSR SETIK :SET INPUT 
LDA $2B :SET START OF °SQGRAM 
STA $FB ; POINTER 

lda *:c 



STA IFC 
LDA $2B 

CLC 

adc no: 

TAX 

LDA $2C 
ADC HOC 
STA *2E 
STA 130 
STA iZ2 
STX I2D 
STX $2F 
STX 131 

LDA H03 ; START LINE I HI 
:STAR T LINEt HI 



LDX HEB 
STA GETLNM 
STX GETLNC 
1230 5ETLP1 LDY H00 
1290 5ETLP2 JSR IFFCF ; INP'JT SYTE 
1300 C«P HOD :END QF LINE 0 



62 



1310 BEQ 5E7LN : YES 

1320 Of #$CA : LINE FEED' 1 

1330 BEQ SETLP2 ;YES 

1340 STfl $0200. Y ; STORE BYTE 

1350 !NY 

1360 CPY #$57 ;END OF BUFFER? 

1370 BNE 5ETLP2 

1380 SETLN LDA $90 : STATUS 

1390 STA SETER 

1400 LDA #$00 : TERMINATOR 

1410 STA $0200, Y ; STORE 

!<20 LDX #$00 

1430 SIX $7A 

1440 LDA #$02 

1450 STA $7B 

1460 JSR $A57? (CRUNCH LINE 

1470 LDA $0200 

1480 BEQ GETLP4 ; NULL LINE 

1490 LDY #$02 

1500 LDA SETLNO jLINEI LO 

1510 STA ($FB),Y : STORE IT 

1520 !NY 

1530 LDA GETLNO*! ;LINE# HI 

1540 STA ($FB).Y : STORE IT 

1550 GETLP3 INY 

1560 LDA $01FC,Y ; SET BYTE 

1570 STA ($FB),Y jSTQRE IT 

1580 BNE 6ETLP3 ; UNTIL END OF LINE 

1590 INY 

1600 TYA 

1610 LDY #$00 

1620 CLC 



1630 ADC $FB j INCREASE POINTER BY 

1640 STA $FD jLENGTH 

1650 STA ($FB),Y 

1660 LDA $FC 

1670 ADC #$00 

1680 INY 

1690 STA ($FB),Y 

1700 TAY 

1710 LDA $FD 

1720 STA $FB 

1730 STY $FC 

1740 TYA 

1750 BUI GETEND 

11160 -E6f.3EJ[M::IifietfA&E_;-&B* 
1770 CLC 

1780 ADC t$0A ;BY 10 

1790 STA GETLNO 

1800 LDA 6ETLNQ+1 

1810 ADC #$00 

1820 STA GETLNO+1 

1830 6ETLP4 LDA GETER j STATUS? 

1840 BNE GETEND ; SAD 

1850 JHP GETLP1 :D0 NEXT LINE 

1860 ; 

1870 6ETEND LDA #$00 
1880 TAY 

1890 STA ($FB),Y ; ZERO END OF PROGRAM 

1900 INY 

1910 STA ($FB),Y 

1920 JSR PUTEND ;CLOSE AND DISK 

1930 JSR OLD i RESET POINTERS 

1940 JMP $A474 



1950 GETMES LDA «<GMES5G ; POINTER TO 
I960 LDY «>GHESS6 : 'READING' 
1970 JSR $AB1E :PRINT STRING 
1980 JMP $F5C1 ; PRINT FILENAME 
1990 GHESSG .BYT 'READING ',$00 
2000 GETIN LDX $B8 
2010 JSR $FFC6 ; SET INPUT 
2020 BCS GETIN1 ; ERROR 
2030 RTS 

2040 GETIN1 JHP $E0F9 ; SEND ERROR 
2050 ; 

2060 6ET0PN LDY #$00 
2070 GET0P1 LDA ($BBJ,Y ;BET BYTE 
2080 STA $0200,Y ;STORE IT 
INY 

CPY $B7 jEND OF FILENAME? 
BNE GET0P1 ;NOT YET 
LDX #$00 

2130 GET0P2 LDA GETSR, X ; BET BYTE 
2140 STA $0200, Y ;STORE IT 
INX 
INY 

CPX #$04 ; END OF SR? 
BNE GET0P2 : NOT YET 
LDA #$60 
STA $B9 

JMP PUT0P4 ; COMPLETE OPEN 
2220 GETSR .BYT \S,R' 
2230 GETLNO .NOR 0 
2240 GETER .BYT 0 

2250 .END _ 



2090 
2100 
2110 
2120 



2150 
2160 
2170 
2180 
2190 
2200 
2210 



CATALOG 

Abbreviation: C(shift)A 
Affected Basic abbreviations: 

NONE 

Token: Hex $EE,$05, Decimal 
218,5 

Modes: Direct and program 
Recommended mode: Direct 
Purpose: To display the 
directory (CATALOG) of a disk 
in drive unit EIGHT. This 
comand will display the 
directory straight to the screen 
wit 



Users of dual disk drives will be 
pleased to note that you can 
specify which drive to display 
by either a number one or zero 
after the command. If no 
number is specified, the 
routine will default to drive 
zero. 

Syntax: CATALOG (O or 1] 
Errors: Syntax error - if the 
command CATALOG is 
followed by anything but '0,1,:' 
or nothing. 

Disk error message - after 



played, the disk error channel 
is read and displayed. 
Use: The command is used to 
display the directory of a disk. 
This can be useful if you have a 
program that you wish to save 
but need to check if there is 
room on the disk or find a file- 
name to use. The directory can 
be paused when displaying, by 
use of the spacebar, and re- 
started with any key. Display 
can be stopped completely 
with the STOP key. 




Routine operation: On entry, 
the routine checks to see if a 
drive number is specified. If no 
number is specified or zero, 
the character '0' is inserted into 
the filename after the '$'. If it is 
a one, the character T is 
inserted. Anything else will 
cause syntax error. The file is 
then opened and each line is 
read and displayed ignoring 
line links. When the directory is 
finished, the file is closed and 
the disk error channel is read. 
Check is the one following str2. 



CATALOGUE 



1000 CATL0G BEQ CATL01 ; DRIVE 0 
1010 CUP #$30 (IS IT 0? 
1020 BEQ CATL01 ;YES 
1030 CMP #$31 [IS IT 1? 
1040 BEQ CATL02 ;YES 
1050 JMP tfiPOS j SYNTAX ERROR 
1060 CATL01 LDA #$30 ;CHAR '0' 
'.070 .BYT $2C 

'.080 CATL02 LDA #$31 ;CHAR T 



1090 STA DPDIR+1 :ST0RE IN STRING 

1*00 LDA #$02 j LENGTH 

1110 LDX #<0PDIR : ADDRESS LSB 

1120 LDY «>0P0IR ;MSB 

1130 JSR $FFBD jSET FILENAME DETAILS 

1140 LDA «$0E 

1150 JSR GETN1 ; GET UNUSED FILE* 

1160 LDX #$08 ;DEVICE 8 

1170 LDY #$00 :SA 0 

1130 JSR $FFBA ;SET FILE DETAILS 

1190 JSR $FFCC ;0PEN FILE 

1200 BCC CATL03 :N0 ERROR 



1210 
1220 
1230 
1240 
1250 
1260 
1270 
1280 
1290 
1300 
1310 
1320 



PHA ; STORE ERROR 
LDA $B8 ; GET FILE « 
JSR $FFC3 : CLOSE FILE 
°LA ;GET ERROR 
JMP $E0F9 ;SEND ERROR 

CATL03 LDY #$03 
CATL04 STY $B7 
LDX $B8 

JSR $FFC6 ;SET INPUT DEVICE 
JSR $FFCF j INPUT 
STA $57 : STORE VALUE 



DISK 

Abbreviated entry: D(shift)l 
Affected Basic abbreviations: 

DIM - DIM 

Token: Hex $EE,$0A, Decimal 
,10 

: Direct and program 
ommended mode: Either 
pose: To send a disk 
nd to the disk unit 



tax: DISK [string expression) 
ere the string expression is: 

:TEST"-to scratch the file 



: DISK ,00' 
ire disk. 



-to reformat the 



e other Syntax is DISK which 
will display the disk error 
message to the screen giving a 
message tike: 

23, READ ERROR/18,01 

where 23 is the error number, 
18 is the track, 01 is the sector, 
and READ ERROR is the error 
description. 

Errors: Syntax error - if the first 
character of the command is 
not a quote character. 
String too long - if the 
command is over 255 bytes 
long. 

Type mismatch - if the com- 
mand is a number, not a siring. 
Use: This command is useful in 
checking errors created from 
disk access by using just DISK 
which displays the message. A 
Basic equivalent would be: 

OPEN 15,8,15 
INPUT U 15,E,EM$,T,S 
PRINT E", "EM$", "T", "S'V 
CLOSE 15 

Also, for sending disk 
commands such as scratch a file 
etc: 

DISK "10" 

is equivalent to: 

OPEN 15 ( 8,15/'10" 

For disk commands, refer to 
the disk user manual. 
Routine entry point: $8A4D 
Routine operation: The DISK 
routine checks to see if 
anything follows the command; 
if not the error channel is read 
and displayed. If there is text 
after the command (which 
must start with the quotes 
character) the text is read in 
and sent in the open 
command. Before either of 
these two operations are 
actioned, the current file is 
closed. 



180 

1340 

:~5o 

1360 

1370 

1390 

139C 

1400 

1410 

1420 

1430 

1440 

1450 

1460 

1470 

1480 

1490 

1500 

1510 

1520 

1530 

1540 

1550 

1560 

1570 

1580 

1590 

1600 

1610 

1620 

1630 



JSR IFFB7 : GET STATUS 

9NE CATL13 ;STAT'JS ERROR 

JSR tFFCF i INPUT 

STA $57+1 :STCR£ IT 

JSR $FFB7 ; SET STATUS 

8NE CATL13 ;STATUS ERROR 

LDY $B7 ; SET COUNTER 

DEY ;30 NEXT 
CATL05 BNE CATL04 

STY $87 ;SET $B7 TC ZERO 
CATL06 JSR $FFCF ; INPUT 

PHA ; STORE IT 

JSR $FFB7 ;5ET STATUS 

TAX ; STORE TO X 

PLA ; GET INPUT CHAR 

CPX MOO iWAS THERE AN ERROR? 

BNE CATL13 ; YES 

LDY IB7 j GET LENGTH 

CPY M50 ;T00 LONG? 

BCS CATL13 ;YES, ERROR 

STA $0200. Y i STORE CHARACTER 

TAX 

BEQ CATL07 ; END OF LINE 
INC $B7 ;D0 NEXT CHAR 
BNE CATL06 :ALHAYS 

■ 

CATL07 JSR IFFCC ; RESET DEFAULT 10 
LDX $9F 
CPX M03 
BEG CATL0B 
LDX $9E 



DISK 



1000 
1010 
1020 
1030 
1040 

1060 
1070 
1080 
1090 
1100 
1110 
1120 
1130 
1140 
1150 
1160 
1170 

I • Oft 

I I OA 



1210 

4 



DISK JSR $0079 | CHECK FOR BLANK 
BEQ DISK01 : AFTER COMMAND. 
JHP DISK04 

DISK01 LDA MOO ; IF BLANK, READ 
STA *B7 ; ERROR MESSAGE 
JSR FOPEN ; OPEN A FILE 
LDA MOD ; PRINT {RETURN > 
JSR $FFD2 

LDA M12 ; PRINT (REVERSE 0N> 
JSR $FFD2 
LDX $86 

JSR $FFC6 ; SET FILE TO INPUT 
DISK02 JSR $FFCF ; INPUT 
PHA 

LDA $90 ; CHECK STATUS 

BNE DISK03 

PLA 

JSR $FFD2 j 
JMP DISK02 
DISK03 PLA 
LDA $B8 
STA $49 

JSR *E1CC : CLOSE FILE 



PRINT CHARACTER 
AND NEXT 



1640 JSR $FFC9 jSET OUTPUT DEVICE 

1650 CATL08 LDX $57 

1660 LDA $57*1 

1670 JSR $BDCD ;PRINT FILE LENGTH 

1680 LDA M20 ; SPACE CHAR 

1690 JSR $FFD2 ;PRINT IT 

1700 LDY MOO 

1710 CATL09 LDA $0200, Y : GET CHAR 

1720 BEQ CATL10 ; END OF LINE 

1730 JSR $FFD2 j PRINT CHAR 

1740 !NY 

1750 BNE CATL09 ;D0 NEXT LINE 

1760 CATL10 LDA MOD ; CARRIAGE RETURN 

1770 JSR $FFD2 ;PRINT IT 

1780 JSR $FFCC ; RESET DEFAULT 10 

1790 JSR $FFE1 ;ST0P KEY? 

1800 BEQ CATL13 ; YES 

1810 JSR $FFE4 :GET KEY 

1820 CMP M20 ; SPACE? 

1830 BNE CATL12 ;N0 

1840 CATL11 JSR $FFE4 ; GET KEY 

1850 BEQ CATL11 ;N0 KEY 

1B60 CATL12 LDY M02 

1870 BNE CATL05 :D0 NEXT LINE 

1880 CATL13 JSR IFFCC ; RESET DEFAULT 10 

1890 LDA $BB ; GET FILE NUMBER 

1900 JSR $FFC3 ; CLOSE FILE 

1910 JSR DISK01 

1920 JMP $A474 ; JUMP TO READY VIA ERROR 

1930 QPDIR .BYT '$0' ; FILE OPEN NAME 

1940 .END ■ 



1230 
1240 

i itr 

1260 
127C 
1280 
129C 
1300 
1310 
1320 
1330 
1340 
1350 



LDA #$92 
JSR $FFD2 
LDA MCE 
JSR $FFD2 
LDA MOO 
JMP IFFCS 



PRINT 'REVERSE OFF; 



PRINT (RETURN: 



:np'j t tc kybd 



FOPEN JSR &ETFN0 ; FIND FREE FILE NO. 
STA 188 

LDA M0F ; SECONDARY ADDRESS 
STA $B9 

LDA #$08 i DEVICE NUMBER 
Vk $9A 



1360 JHP $E1C1 ; OPEN 

1370 
13B0 

1390 
1400 
1410 



■440 
145C 
1460 



: 

&ETFN0 LDA #«0F ; CHECK TABLE OF 
5ETN1 LDX $98 ; FILE NUMBERS FDR 
CPX #$00 ; A FREE ONE 
BEQ 5ETN4 : HAS BEEN FOUND 
GETN2 CMP $0258. X 
BNE GETN3 
SEC 

SBC M01 
JMP GETN1 

SETN3 DEX : TRY NEXT NUMBER 



c 







— 



— 



:480 
1490 

1500 
1510 

1 « 4 V 

1530 
1540 
1550 
1560 
1570 



8NE 5ETN2 
GETN4 RTS 



or mm 



DISK04 CMP i$22 ; CHECK 

BEG DISK05 | IN QUOTES 

JHP IflFOa : SYNTAX ERROR 
DISK05 LDA f== ; CLOSE CURRENT 

STA $49 | DISK FILE 

JSR tElCC 

JSR $AD9E ; GET TEXT IN QUOTES 
JSR «56A: 



1590 LDX $22 : STRING ADDRESS AT 

1400 STX $8B ; ($22) 

1610 LDY $23 

•620 STY $BC 

1630 DISK07 STA $B7 : SET LENGTH 

!64C JSR FOPEN ; OPEN FILE 

I65C LDA MOD 

1660 JSR $FFD2 : PRINT < RETURN) 

1670 RTS : EXIT DISK 

1680 .VIZ 



JXEC 



1000 EXEC JSR DPARS ;GET FILE PARAHETERS 

1010 JSR GETOPN ;OPEN FILE 

1020 LDA l$93 : CLEAR SCREEN 

1030 JSR $FFD2 

1040 LDA $0300 ; STORE OFF ERROR LINK 

I0S0 STA EXECER 

1060 LDA $0301 

1070 STA EXECERM 

108C LDA $0302 ; STORE OFF HARH START 

1090 STA EXECST 

1100 LDA $0303 

1110 STA EXECST+1 

1120 LDA KNERGRT ;SET 'RESET INPUT' 

1130 STA $032C ; TO RTS 

1140 LDA IMCRGRT 

1150 STA $032D 

1160 LDA KEXEC06 ;SET ERROR VECTOR " 

1170 STA $0300 

1190 LDA DEXEC06 

1190 STA $0301 

1200 LDA KEXEC02 ;SET HARH START 

1210 STA $0302 

1220 LDA DEXEC02 

1230 STA $0303 

1240 EXEC02 LDX EXECNO 

1250 JSR $FFC6 {SET INPUT 

1260 LDX 124 jBOTTOH 

1270 LDY MOO ; LEFT 

1280 CLC 

1290 JSR $FFF0 ; OF SCREEN 

1300 LDX MOO 

1310 EXEC03 JSR $FFCF jGET BYTE 

1320 PHA 

1330 LDA $90 ; CHECK STATUS 

1340 BNE EXEC05 

1350 PLA 

1360 CUP MOD ; CARRIAGE RETURN? 

1370 BE9 EXEC04 

1380 STA $0200, X 

1390 INX 



1400 JSR $FFD2 :PRINT CHAR 
1410 JHP EXEC03 
1420 EXEC04 LDA MOO 
1430 STA $0200,1 
1440 LDA M01 
1450 STA $C6 
1460 LDA MOD 
M70 JSR $FFD2 

1480 LDX MOO s SET KEYBOARD AS INPUT 

1490 JSR $FFC6 

1500 LDX MFF 

1510 LDY M01 

1520 JHP $A486 ;£X£C IT 

1530 EXEC05 JSR EXEC07 : RESET VECTORS 

1540 JSR DISK01 jDISPLAY DISK ERROR 

1550 JHP $A474 ;EXIT TO READY 

1560 EXEC06 BCC EXEC02 



1570 
1580 

1590 
1600 
1610 
1620 



TXA ;SAVE ERROR NUMBER 

PUfl 



JSR EXEC07 ; RESET VECTORS 
PLA ; RESTORE ERROR NUMBER 
TAX 

JMP ($0300) ;SEND ERROR 
1630 EXEC07 LDA M2F ; RESTORE 

'RESET DEFAULT 10' 
1640 STA $032C 
1650 LDA MF3 
1660- STA $032D 

1670 LDA EXECER ; RESET ERROR LINK 
1680 STA $0300 
1690 LDA EXECER*! 
1700 STA $0301 

1710 LDA EXECST ; RESET HARM START 

1720 STA $0302 

1730 LDA EXECST+1 

1740 STA $0303 

1750 LDX EXECNO 

1760 JSR $FFC3 ;CLDS£ FILE 

1770 RTS 

1780 EXECST .NOR 0 
1790 EXECER .NOR 0 
1800 EXECNO .BYT 0 
181C .END 




EXEC 

Abbreviated entry: E(shift)X 
Affected Basic abbreviations: 

EXP - EXP 

Token: Hex $EE,$OD, Decimal 
238,13 

Modes: Direct and program 
Recommended mode: Direct 
only 

Purpose: To EXECute a text file 
stored on disk. This command 
works in conjunction with GET 
and PUT. 

Syntax: EXEC filename,d - 
where d is the device number 
(disk only). 

Errors: Illegal device - if the 
device number specified is less 
than eight. 

Missing filename - if a null 
filename is specified 
File not found - if the file 
does not exist 

Device not present - if no 
disk drive is connected 
Too many files - if 10 files 
are already open 
Disk errors - at the end, the 
disk error channel is read and 
displayed. 

Use: EXEC can be used in 
several different ways. The 
main one is to set up function 
keys when first powered up. 
For example enter the 
program: 

10 CTL(„5,0,0,1) 

20 KEY1,"CATALOG"+CHR$ 

(13) 

30 KEY2/'DISK"+CHR$(13) 

40 KEY3,"LIST'+CHR$(13) 

50 KEY4,"RUN"*CHR$(13) 

60 KEY5."OLD"+CHR$<13) 

70 KEY6,"PEEK(" 

80 KEY7,"RENUMBER" 

90 KEY8,"FIND" 

100 PRINT CTL(12,12„„1) 

"FUNCTION KEYS DEFINED" 

Use the PUT command to write 
this to a disk file: PUT"FK",8 

When powered up, type 
EXEC"FK",8 and the com- 
mands will be carried out and 
your function keys will be 
defined. 

Other uses could be a string 
of change commands to a 
program. 

Routine entry point: $8CCE 
Routine operation: The 

filename and device number 
are read in and the file is 
opened. Each line is read into 
the input buffer until carriage 
return is found. It is then 
tokenised, and executed until 
the file is complete or an 
operating error occurs. 



Abbreviated entry: M(shift)E 
Affected Basic abbreviations: 

None 

Token: Hex $EE,$12, Decimal 
238,18 

Modes: Direct and program 
Recommended mode: Direct 

To merge a Basic 
;ram from disk into the 
rent Basic program in 



Syntax: MERGE filename^ - 
where d is the device number 
(disk only). 

Errors: Illegal device - if the 
device number specified is less 
than eight. 

Missing filename - if a null 
filename is specified. 
File not found - if the file 
does not exist. 

Device not present - if no disk 

drive is connected. 

File open error - if 10 files 



Disk errors - at the end, the 
disk error channel is read and 
displayed. 

Use: Merge is used to combine 
two Basic programs in memory. 
Each line of the program on 
disk is read in until the zero 
byte is reached, and stored in 
the input buffer. The Basic 
routine to enter a line is then 
called and the line is entered at 
the correct place. Note: If a line 
number of the program to 

in 



1000 MERGE JSR DPfiRS | GET FILE PARAMETERS 
1010 LDfi KMRGHES | DISPLAY MERGE MESSAGE 
1020 USi DHRKfl 
1030 JSR IAB1E 

1040 JSR $F5C1 ; DISPLAY FILENAME 

1050 LDA $0302 : SAVE BASIC MARK START 

106Q STA "ERGST ; LINK 

:070 LDA $0303 

1080 STA MERGSTM 

I09C LDA »$0E : FIND FILE NUMBER 

1100 JSR GETN! 

K10 STA $Be 

1120 STA FILENQ 

1130 LDA i$00 

1140 STA $B? 



• •v 



1 

1140 

I i Ifi 

1 • •' V 

1180 

two 

1200 
1210 
1220 
1230 
1240 

:2S0 

1260 
1270 
128C 

4 hqa 



1310 

1320 

133C 

1340 

1350 

1360 

1370 

1380 

'390 

1400 

1410 

1420 

1430 

1440 



JSR $FFC0 : OPEN FILE 
LDX FILENO 

JSR $FFC6 ; SET FILE TC INPUT 
LDA KHERGRT 
STA $C32C 

LDA DHERGRT : SET ' RESE T INPUT' 
S T A $032D i TO A RTS 
LDA KRER604 
STA $0302 

LDA DNERG04 : SET 9AS!C MAR!- START 
STA $0303 I T 2 MERG04 
JSR $FFCF ; INPUT 2 BYTE LOAD 
JSR $FFCF ; ADDRESS 
MER502 JSR $FFCF ; INP'JT NEXT LINE 
STA $!4 : POINTERS AND 
JSR $FFCF : CHECK FOR ZERO 
STA $15 : (END OF BASIC MOM) 
3RA $14 
BE9 *ERE?5 

LDA $90 : CHECK STATUS 
BNE MER6C5 

JSP $FFCF : INPUT LINE NUMBER 
S'A $14 ; AND STORE IN $14 i $15 
JSR $FFCF 
STA $1! 
LDY l$00 

«RG03 JSR $FFCF ; INP'JT LINE AND 
STA $0200, Y : STORE IN INPUT 
LDX $C5 ; BUFFER 
CPX 163 



1450 BEQ MERG05 
1460 



I NY 



1480 
1490 
1500 
1510 
1520 
1530 
1540 
1550 
1560 



END 2 C LINE" NC. 



*$00 
BNE MERG03 
TYA j YES 
CLC 

ADC l$04 
STA $0B 

LDA $90 ; CHECK STATUS 
BNE MERG05 
LDY $0B 

JHP $A4A4 ; MERGE LINE 
1570 MERG04 JHP MER602 ; DO NEXT LINE 
1580 MERG05 LDA HERGST : RESET BASIC WARM 
1590 STA $0302 ; START 
LDA MERGST+1 
STA $0303 

AND 'RESET DEFAULT 1/0' 



1600 
1610 
1620 
1630 
1640 
1650 
1660 
1670 
1680 
1690 
1700 



CLOSE FILE 
RESET DEFAULT 1/0 
DISPLAY ERROR CHANNEL 
JUMP TO READY 



LDA *$2F ; 
STA $032C 
LDA t$F3 
STA $0320 
LDA FILENO 
JSR $FFC3 
JSR $FFCC 
JSR DISK01 
JHP $A474 
1710 MERGRT RTS 
1720 FILENO .BYT 0 

1730 MRGMES .BYT $91, 'MERGING: ',$00 
17.40 HERGST .WOR 0 

1750 ; 

1760 ;6ET PARAMETERS AND CHECK FOR 
1770 i ILLEGAL DEVICE. USED BY DISK 
17B0 : ONLY C0HHANDS. 
1790 : 

1900 DPARS JSR $E1D4 ;GET FILENAME ETC 

1810 LDA $BA ; IS DEVICE DISK? 

1820 CMP «$08 

1830 BCC PARERR ;N0 

1840 LDA $87 ;FILENAHE LEN6TH 

1S50 BEQ PARER1 ; ZERO 

1860 RTS 

1870 PARERR LDX l$09 ; ILLEGAL DEVICE 
1880 .BYT $2C 

1890 PARER1 LDX «0S :MISSING FILENAME 
1900 JMP $A437 : SEND ERROR 



existing line number, the 
MERC Ed line will replace it- 
Routine entry point: $97B0 
Routine operation: The 

filename and device are read in 
and checked for missing 
filename and illegal device. If 
both checks are OK, the file is 
opened and the message 
MERGING is displayed. Each 
line is then read into the input 
buffer and entered using the 
Basic routine to do so. When 
the file is completed, it is closed 
and the disk error channel is 
read and displayed. 

OLD 

Abbreviated entry: 0(shift)L 
Affected Bask abbreviations: 

None 

Token: Hex $EE, $13, Decimal 
238.19 

Modes: Direct and program 
Recommended mode: Direct 
only {there should be no 
program in memory) 
Purpose: To restore a Basic 
program after a NEW has been 
performed. 
Syntax: OLD 
Errors: None 

Use: OLD can be used if the 
program in memory has been 
wiped out using the NEW 
command. OLD will not work if 
DELETE was used to remove the 
whole program or if a variable 
has been declared since the 
NEW. (In most cases, syntax 
error will create a variable e.g. 
LI instead of L(shift}l will create 
the variable LI and give syntax 
error instead of trying to list the 
program). 

Routine entry point: $9885 
Routing operation: The first 
line is scanned until the end 
and the pointer to the next line 
is restored. The program is then 
re-chained and variable 
pointers are set. 

PUT 

Abbreviated entry: P(Shift)U 
Affected Basic abbreviations: 

None 

Token: Hex $EE,$15, Decimal 
238,21 

Modes: Direct and program 
Recommended mode: Direct 
Purpose: To list a Basic 
program to a disk file without 
line numbers 

Syntax: PUT filename,d - 
where d is the device number 
(disk only) 

Errors: Illegal device - if the 
device number specified is less 
than eight. 

Missing filename - if a null 
filename is specified. 











1000 OLD LDA $2B : FIND THE END OF 



1010 
1020 
1030 
1040 
1050 
1060 
1070 



CLC ; THE FIRST LINE 
ADC M04 

SET POINTER TO AFTER 
LINE NUMBER 



STA «57 ; 
LDA $2B ; 
ADC 1100 
STA 157+1 
LDY #$00 



1090 0LD01 LDA (157), Y ; SEARCH LINE 
1090 BED 0LD02 | IF ZERO. END OF LINE 
1100 LDA $57 
1110 CLC 

1120 ADC HOI ! INCREMENT POINTER 



1130 
1140 
1130 
1160 
1170 
I18C 
1190 
1200 
1210 
:220 

1240 



1260 
1270 
1290 



STA $5? 
LDA $57+1 
ADC t$00 
STA $57+1 
JHP 0LD01 

0LD02 LDA $57 : END OF LINE 
LDY l$00 : FOUND 

CLC 

adc *$c: 

STA <$2B),Y : SET NEXT LINE 
INY : POINTER 
LDA 457+1 
ADC HOC 
STA (125), Y 

JMP RESVAF, ; SET VARIABLE POINTERS 
.END 



1000 
1010 
1020 
1030 
1040 
1050 
1060 

I V i V 

1080 
1090 
1100 
1110 
1120 
1130 
1140 
1150 
1160 
1170 
1180 
1190 
1200 
1210 
1220 
1230 
1240 

- — - ■ 

1270 
1280 
1290 
1300 
1310 
1320 
1330 
1340 
135C 
1360 
1370 



PUT JSR DPARS ; GET FILENAME PARAMETERS 
JSR PUTHES j'NRITINS..' 
JSR PUTOPN iDPEN FILE 
JSR PUTOUT ;SET OUTPUT 
JSR $A533 ; RE-CHAIN PROGRAM 
LDA $2B :SET PROS POINTER 
STA $5F :T0 START OF PROGRAM 
LDA I2C 
STA 160 

PUT02 LDY #$00 ;END OF PROGRAM? 
LDA ($5F),Y 
INY 

ORA t$5F),Y 

BEQ PL'TEND ;YES 

LDY #$04 iPOINT TO FIRST CHAR 
PUT03 LDA ($5F),Y 

BEQ PUTNL : END OF LINE 

BHI PUTTK :PRINT TOKEN 

CMP l$22 ; IS IT A QUOTE? 

BEQ PUTQT ;YES DO IT 
PUT04 JSR $FFD2 : PRINT CHAR 

INY ;SET TO NEXT 

BNE PUT03 ;D0 NEXT (ALWAYS) 

PUTEND LDA HQ" CARRIAGE RETURN 

JSR $FFD2 : PRINT IT 

JSR PL'TCLS : CLOSE C ILE 

JMP DISKOl : DISPLAY DISK MESSAGE 
PUTNL LDY MOO 

LDA ($5F),Y ;SET LINK LC 

TAX 

INY 

LDA f$5F),Y ;6ET LINK HI 

STA $60 : STORE AS NEXT POINTER 

STX $5F 

LDA HOD : CARRIAGE RETURN 
JSR $FFD2 .PRINT IT 
LDA $90 : STATUS 



1380 BNE PUTEND ;EXI r IF BAD 
1390 JMP PUT02 
1400 ; 

1410 PUTQT JSR. $FFD2 .PRINT IT 

1420 INY ; NEXT BYTE 

1430 LDA !$5Ff.Y ;GET BYTE 

1440 BEQ PUTNL ; END OF LINE 

1450 CMP «$22 ; QUOTE? 

1460 BNE PUTQT ;N0 

1470 BEQ PUT04 j OUTPUT AND DO NEXT 

1480 : 

1490 PUTTK CMP t$EE ;MY TOKEN? 

1500 BEQ PUTTK1 ;YES 

1510 JSR PRIN09 : TOKEN TO TEXT 

1520 BMI PUTTK2 ; ALWAYS 

1530 PUTTK1 JSR PRIN03 ; CONVERT TO 

TEXT AND PRINT 

1540 PUTTK2 AND t$7F ;MASK TOP BIT 

1550 LDY $49 ; RESTORE .Y 

1560 JMP PUT04 iSEND AND DO NEXT 

1570 ; 

1590 PUTOUT LDX $B8 jFILE NUMBER 
1590 JSR $FFC9 ;SET OUTPUT 
1600- BCS PUT0P3 j ERROR 
1610 RTS 

1620 PUTOPN LDY »$00 

1630 PUT0P1 LDA ($BB).Y ;GET NAME BYTE 

1640 STA $02Q0.Y ;STORE IT 

1650 INY 

1660 CPY $B7 ; END OF NAME? 
1670 BNE PUT0P1 ; NOT YET 
1680 LDX #$00 

1690 PUT0P2 LDA PUTSN.X ; GET BYTE 
1700 STA $0200.Y ;STORE IT 
1710 INX 
1720 INY 

1730 CPX l$04 ; DONE? 
1740 BNE PUT0P2 ;NOT YET 
1750 LDA l$61 
1760 STA $B9 




Device not present - if no disk 

drive is connected. 

Too many files - if 10 files 

are already open. 

Disk errors - at the end, the 

disk error channel is read and 

displayed. 

Use: PUT is used in 
conjunction with GET to allow 
the editing of Commodore 
assembler source files. PUT can 
also be used as an alternative 
save method for Basic 
programs so that they may be 
run by using the EXEC 
command. See EXEC for an 
example of use. 
Routine entry point: $997A 
Routine operation: The 
filename is read along with the 
device number and checks are 
made for missing filename and 
illegal device number. If these 
are OK, the file is then opened 
and each line is output using 
the print tokens routine to the 
file. At the end of each line, a 
carriage return is sent and an 
extra carriage return inserted at 
the end of the file. The file is 
then closed and the disk error 
channel is read and displayed. 

TYPE 

Abbreviated entry: Ti shift lY 
Affected Baste abbreviations: 

None 

token: Hex $EE,$1B, Decimal 
238,27 

Modes: Direct and program 
Recommended mode: Direct 

Purpose: To display a text file 
stored on disk to the screen 
Syntax: TYPE filename.d - 
where d is the device number 
(disk only) 

Errors: Illegal device - if the 
device number specified is less 
than eight. 

Missing filename - if a null 
filename is specified. 
File not found - if the file 
does not exist. 
Device not present - if 
disk drive is connected. 
Too many files - if 10 files 
are already open. 
Disk errors - at the end, the 
disk error channel is read and 
displayed. 

Use: TYPE can be used to look 
at sequential files stored on 
disk. This can be used rather 
than GET if you wish to check a 
certain line in the file is as the 
file is not loaded in but directly 
displayed from the disk. 
Easyscript text files could be 
just as easily displayed using 
this routine. 
Routine entry: $9F50 
Routine operation: The 
filename is read along with the 



no 



67 



c 







1790 

1800 

1810 

1820 

1830 

1840 

1850 

I860 

1870 

1880 

1890 

1900 

1910 

1920 

1930 

1940 

1950 

* D /iP 
197C 
1980 
1990 



LDA MOO 
STft $0200, Y 
LDY H02 

STft IBB ; POINTER LO 
STY «BC [POINTER HI 
LDA HOE 

JSR SETN1 ;6ET FILE NUMBER 

STA 188 (FILE! 

STA EXECNO : FDR EXEC 

JSR $FFCO ;OPEN 

BCS PUTQP3 ; ERROR 

RTS 

PUT0P3 JUP JE0F9 ; OUTPUT ERROR 
PUTS* . BY T ',8,11' 

PUTCLS Lil K03 
JSR *FFC? : OUTPUT TO SCREEN 
LDX HOC 

JSR *FFC6 ; INPUT FRQfl KEYBOARD 
IDA EXECNO 

JMP SFFC3 i CLOSE FILE ^ 



:ooo ptmca lda kphebss i 

POINTER TC MESSAGE 

2010 LDY DP1ESSE 

2020 JSR MB1E ; PRINT MESSAGE 

2030 JMP »F5C1 i PRINT FILENAME 

2040 PMESSS .BYT 'WRITING ',$00 

2050 .END 



1000 TYPE JSR DPflRS ; GET FILE DETAILS 
1010 
1020 



JSR GETQPN ;OPEN FILE 
JSR GETIN ;SET INPUT 
1030 TYPE2 JSR IFFCF ; INPUT 
1040 LDX *90 ;GET STATUS 
1050 JSR IFFD2 ; PRINT BYTE 
1060 JSR SFFE1 ;STOP KEY? 
1070 BEG TYPE1 ;YES 
1080 TXA 

1090 BEQ TYPE2 ;N0 ERROR 
1100 TYPE1 JMP PUTEND ; DONE 
1110 .END 



BYTE 



device number and checks are 
made for missing filename and 
illegal device number. If these 
are OK, the file is then opened 
and each character is read in 
and displayed until the end of 
file or the stop key is pressed. 
At this point, the file is closed, 
the disk error channel is read 
and the routine exits. 




Because of the size of this 
article it was impossible to 
print the Basic Loader for 
the machine code. If you 
would like a copy of the 
loader then please send a 
large stamped self 
addressed envelope to 
Better Basic Loader, Your 
Commodore, 1 Golden 
Square, London W1R 3AB. 




COMMODORE 64 OWNERS 

The Ultimate Reference Book 




Programming The Commodore 64 by 
Raeto West 

Comprehensive and readable teaching and 
reference book on the 64 T.-kes over where 
Commodore - manual leaves off; much larger 
t»an most computet books Programs available 
separately on disk o> on two tapes save 
Keying m tune. 

Topics include course in BASIC programming, 
now BASK: works. Extending BASIC, machine 
language course. BOM guide and memory 
maps etc . through coverage ol graphics and 
sound, tape and d«sk handling hardware 

Best of a» his books required (e*dmg J or 
all those who wish to make full use of their 
64*' - Jack Cohen 



Programming The Commodore 64 tR West). C 14 90 in UK Europe BlOpages 
6H' «9V' paperback 17 chapters » appendices ISBN O 9507650 2 3. 
Published by Level Ltd ICompufer Publications). •* O Bo* -38. Hampstead. 
London NW3 IBM Programming the Commodore 64. Disk (6 90 line VAT) 
ISBN O 950 7650 3 1 Programming the Commodore 64 Tapes E9 90 imc 
VATl ISBN O 9507650 4 X Programming the VIC (West). £10 90 602 
pages. ISBN O 9507650 1 5 "Pecked with virtually a" the information you 
ere likely to need'' J Goldsmith Programming the PET'CBM (West), f 18 90 
512 pages ISBN O 9507650 O 7 "Unauesnonably the most 
comprehensive reference I have * rn" Jim Butterlield 



MAIL ORDtft FORM 

Send orders and make cheoues payable to Level Ltd Computer 
Publ.eat.onsl. c o B.bUos D.str.but*n. Star Road Partridge Green. Nr 
Horsham. West Sussei RM13 8LO 



Quantity Title 



Total 



NAWf 



Programming the Commodore 64 (Westi 
Programming The Commodore 64 - Disk 
Programming The Commodore 64 - Tapes 
P-ogremmmg The Vic (Westi 
Prog.amm.ng The PET'CBM I West. 



f14 90- 
C8 90-* 
(9 90-* 
f 10.90" 
f 18 90* 
'Aod CI each postage 
• 'Add 50p each postage 
TOTAL PAYMENT 



AODRESS. 



1^ 



I ™ 2 ™J$^ 



EVER HAD A LOADING PROBLEM? 

Then send oil lor WIZARD'S TAPE HEAD ALIGNMENT KIT - No one 
should be without one! 

By lar the most common cause ot loading failure is bad alignment ol 
your tape heads All cassette units can become out ol alignmen witn 
use and may have been Incorrect Irom the start Our alignment kit win 
allow you to precisely set up your tape heads lor ihe best possible 
loading conditions In many cases this will make a remarkable 
difference m loading reliability especially ol last loading programs 
Our kit comprises 

(1) A precision recorded cassette containing a sophisticated test 
program (2) A special adjustment screwdriver (3| A direction 
indicator. (41 A turning meter (5) A detailed instruction booklet with 
diagrams (6) A Loading Doctor - to help you diagnose any loading 
problems All ol this tor only £6.95!" 

COPY KING 

• Revolutionary new copier lor FAST LOADING programs. 

• Striped loaders, picture loaders, etc.. handled with ease 

• Back-up copies are made on blank TAPES at last speed llaster than disc!) 

• Extremely easy to use - no technical knowledge required 

• No additional hardware and no second cassette recorder are required 
•We believe this 100 o/o machinecode copier is unrivalled in performance 

• Buy the market leader Great value at £7 95 

HALF PRICE SPECIAL THIS MONTH!!! 

Copycat and Lightning Load together lor only £5 95 Usually £5.95 each 

COPYCAT 

• Our highly popular back-up copier lor Commodore/standard rate 
loading systems 

•Thousands sold in the last year 

• Makes back-up copies ol Commodore/siandard rate software onto blank 
tapes 

•Wizard sound effects Cassette magic sense 

LIGHTNING LOAD II 

• Converts almost all your slow loading games'programs into SUPERFAST 
TURBO loading versions on tape. 

• The tedious wait for loading is over when you buy this excellent program 

Overseas orders welcome Europeans please add 50p Outside E''«>pe 
add £i 00 UK postage free Rapid dispatch ol orders Cheques'POs to 
WIZARD SOFTWARE (DEPT. A) 
59 THE MARLES. EXMOUTH. DEVON EXB 4NE 



BLANK DISKS 



Top Quality 51" Bulk Packed Disks 
Supplied in 1 0's with a FREE Plastic Library Case, Labels etc. 



Single Sided Double Sided 

(40/80 Track) (40/80 Track) 

10 -5T Disks 

(With a FREE Plastic g*4*\ nr a C 

Library Case) £13,95 £17*95 



50 -5F Disks 

(With a FREE Perspex 
Storage Box) 



£59.95 £79.95 



* LIFETIME WARRANTY ★ 

* FREE FAST DELIVERY ★ 



All prices, are inclusive of VAT. 
Delivery FREE throughout the U.K. 

3" & 3i" Disks also available 
Bulk Orders, Trade Enquiries & Educational Enquiries Welcome 



Please Send Cheques/Postal Orders to:- 

SJB DISKS LIMITED (Dept YC ) 

mm 1 1 Oundle Drive, Nottingham, NG8 1 BN i 
' ' Telephone (0602) 78231 0 B 






Carry Marshall 
explains how a 



computer can be used 
to interpret images. 



PR 



IN MANY AREAS, COMP- 
ulers are used to help interpret 
images such as thai in Figure 1. 
The illustration shows a part of 
the sky as seen from a powerful 
telescope, and computers are 
used to process pictures of this 
kind to make sense of them in 
terms of the galaxies and 
clusters of objects appearing in 
them. A similar process takes 
place in giving a robot the cap- 
ability to see. To be able to 
recognise the items that it is to 
assemble, for instance, an 
industrial robot must be able to 
interpret the pattern of darker 
and lighter dots representing 
its field of vision as presented 
by a video camera. In both 
cases, the computer is running 
a program that enables it to 
bring some kind of order to an 
apparently chaotic scene. 

There is another area where 
computers can be used to help 
interpret images, and this is in 
archaeology. Often on a site 
excavated by archaeologists, 
the only evidence remaining of 
a building that once occupied 
the site is a pattern of holes in 
the ground. After the building 
itself has decayed, the holes in 
which its supporting timbers 
were placed (known as post- 
holes) remain. Even for a single 
building, which will obviously 
have a rectangular plan, the 
plan itself is often none too 
clear. When many buildings 
have occupied a site at 
different times with some built 
over the same ground as 
earlier, vanished, ones, the 
overlapping patterns of holes 
can be chaotic. Computers can 
be used to good effect in trying 
to reconstruct the plans of the 
houses that once occupied a 
site. 

This month's project is to 
reconstruct the plan of a 
building from an irregular but 
more-or-less rectangular 
pattern of post-holes such as 
that in Figure 2 by super- 
imposing an outline of the plan 
on it, as shown in Figure 3. 




Figure 2 A pattern of post-holes 

The Solution 

The first thing the program 
must do is to plot the pattern of 
post-holes as in Figure 2. This 
can be done by reading the 
positions of the post-holes 
from DATA statements and 
then plotting a block at each 
position to represent a post- 
hole. The positions will be 
needed again later in finding 
the plan of the house, so it is 
worth storing them in arrays as 
they are read. Using arrays 
named XP and YP to hold, 
respectively, the column and 
row positions on the screen for 
the post-holes, and making use 
of our point-plotting sub- 
routine, which begins with line 
1000, the program starts as: 

10 DIM XP(12), YP(12), X(12), 
Y(12): NP=12 

20 GOSUB 500: REM PREPARE 

HI-RES SCREEN 

30 FOR J=1 TO 12 

40 READ C, R: XP(J)=C: YP<J)=R 



Figure 4: Good and bad approximation to the main axis for a 
pattern of post-holes. 

50 GOSUB 1000: C=C+1 : 



GOSUB 1000: REM PLOT 
POINT 

60 R=R+1: GOSUB 1000: OC-1: 
GOSUB 1000 
70 NEXT J 

80 DATA 46, 55, 62, 62, 99, 77, 
120, 90, 109, 105, 106,118 
90 DATA 109, 135, 82, 121, 49, 
113, 35,110, 38, 93.43, 79 



The next step is to find the 
main axis of the house, by 
doing this we shall find the 
directions of all the walls of the 
house. The longer walls will be 
parallel to the axis and the 
shorter walls must be at right 
angles to it. Figure 4 shows the 
idea behind the method for 
finding the main axis. It shows a 
line that goes close to the posi- 
tions of all the post-holes and a 
second line that obviously goes 
much farther from most of 
them. The first represents a 
good approximation to the 
main axis, and the second a 
poor one. We shall use a well- 



known mathematical method 
for finding the line passing 
closest to a set of points, and 
this will give us the main axis of 
the house. The method is that 
of finding the line giving the 
'best least squares fit' to a set of 
points. 

We will write the program 
so that it waits until a key is 
pressed before going on to 
calculate the position of the 
main axis and to display it using 
our line-drawing subroutine 
that starts at line 2000. This gives 
the next section of the program 
as: 

100 GET C$: IF C$=" " THEN 
110 FOR J=1 TO 12: X(J)=XP(J): 
Y(J)-YP(J): NEXT J 
120 GOSUB 3000: REM FIND 
AND DRAW LINE 

The subroutine that does all the 
work is: 

2999 REM FIND AND DRAW 
LINE 

3000 SX=0: SY=0: XX=0: XY=0 
3010 FOR K=1 TO NP 





Program: Post-Holes 

10 DIM XP{12I,YP(12),X(12), 
Y(12),E(12I,C(12): NP=12 

20 60SUB 500: REM PREPARE 
HI-RES SCREEN 

30 FOR J=l TO 12 

40 READ C, R: XP(J)=C 
: YP(J)=R 

50 G0SUB 1000: OC+1 
: 60SUB 1000: REH PLOT 
POINT 

60 R=R+1: S0SUB 1000: C=C-1 

: 60SUB 1000 
70 NEXT J 

BO DATA 46,55,62,62,99,77, 
120,90,109,105, 106, 11B 

90 DATA 109,135,82,121,49, 
113,35,110,38,93,43,79 

100 BET CI: IF C«=" THEN 60 
TO 100 

110 FOR J»l TO 12: X(J)=XP(J) 
: Y(J)=YP(J): NEXT J 

120 60SUB 3000: REH FIND AND 
DRAW LINE 

130 GET C»: IF C$=" THEN GO 
TO 130 

140 REH FIND DISTANCE FROH 

AXIS 
150 HAX=0: HIN=0 
160 FOR K=l TO 12 
170 E(K)=YP(K)-H«XP(K)-CC 
1B0 IF E(K)>NAX THEN HAX=E(K) 
190 IF EtKXHIN THEN HIN=E(KJ 
200 NEXT K 

210 REN CLASSIFY EACH POST-H 
OLE 

220 FOR K«l TO 12 

230 IF E(K)>0.7IHAX THEN C(K 

60T0 300 
240 IF E(KX0.7IMIN THEN C(K 

)=2: 6DT0 300 
250 IF ABS(H)>1 THEN SOTO 2B0 
260 IF XP(K)>SX/12 THEN C(K> 

=3: SOTO 300 
270 IF XPIKXSX/12 THEN C(K) 

=4: GOTO 300 
280 IF YPIKDSY/12 THEN CIK) 

«3 

290 IF YPIKXSY/12 THEN C(K> 
=4 

300 NEXT K 

310 FOR 0=1 TO 4 

320 NP=0 

330 FOR JM TO 12 
340 IF C(J}=Q THEN NP=NP+1 
: XJNP)=XP(J): Y(NP)=YP(J) 



350 NEXT J 
360 60SUB 3000 
370 NEXT Q 
380 END 

500 POKE 53272, PEEK (53272) 
OR 8 

510 POKE 53265, PEEK(53265} 
OR 32 

520 FOR 1=8192 TO 16192 
: POKE I, 0: NEXT I 

530 FOR 1=1024 TO 2023 
: POKE I, 22: NEXT I 

540 RETURN 

1000 RQ=INT(R/8): CQ=INT(C/8: 
1010 L=R AND 7 
1020 BIW - (C AND 7) 
1030 BYTE=B192+R0!320*C0I8+L 
1040 POKE BYTE, PEEK (BYTE) 0 

R 2 A BIT 
1050 RETURN 

2000 DX=X2-X1: DY=Y2-Y1 
2010 IF DX=0 THEN 2070 
2020 FOR C=X1 TO X2 STEP SGN 
(DX) 

2030 R=lNT(Yl+(C-Xl)tDY/DX) 
2040 6QSUB 1000 
2050 NEXT C 
2060 RETURN 
2070 C=X1 

2080 FOR R=Y1 TO Y2 STEP SGN 
(DY) 

2090 GOSOB 1000 
2100 NEXT R 
2110 RETURN 

2999 REH FIND AND DRAM LINE 

3000 SX=0:SY=0:XX=0:XY=0 
3010 FOR K=l TO NP 

3020 SX=SX*X(K): SY=SY+Y(K) 
3030 XX*XX*X(K)IX(K) 

:XY=XY+X(K)tY(K) ' 
3040 NEXT K 
3050 D'SXISX-NPtXX 
3060 H=(SYtSX-NPtXY)/D 
3070 CC=(SXIXY-SYtXX)/D 
3080 Xl=200: X2*0 
3090 FOR K=l TO NP 
3100 IF XtKXXl THEN X1=X(K) 
3110 IF X(K)>X2 THEN X2=X(K) 
3120 NEXT K 

3130 Y1=MX1+CC: Y2=HtX2+CC 
3140 GOSUB 2O00: REH DRAW 
LINE (XI, YD T0(X2,Y2) 
3150 RETURN 



3020 SX=SX+X{K): SY=SY+Y(K) 

3030 XX = XX + X(K)*X(K): 

XY=XY+X(K)*Y(K) 

3040 NEXT K 

3050 OSX*SX-NP*XX 

3060 M=(SY-SX-NP*XY)/D 

3070 CC=(SX-XY-SY«XX)/D 

3080 X1=200: X2=0 

3090 FOR K=1 TO NP 

3100 IF X(K> < X1 THEN X>X(K) 

3110 IF X(K) >X2THENX2=X(K) 

3120 NEXT K 

3130 Y1=M-X1+CC: Y2=M* 
X2+CC 

3140 GOSUB 2000: REM DRAW 
LINE (XI, Y1) TO (X2, Y2) 
3150 RETURN 

With the main axis of the 
house plan located, we can 
identify the post-holes that 
belong to the long walls 
because those on one long wall 
will all be more or less the same 
distance above it and those on 
the other about the same 
distance below it. The remain- 
ing post-holes must belong to 
the short walls and, broadly 
speaking, those to the right of 
the centre of the building will 
be on one short wall and those 
to the left on the other. 

By introducing a code for 
the walls of the plan, we can 
use an array named C to hold a 
code number for each point 
and so record for each point 
the wall to which it belongs. 
The code is: 



Wall 

Long wall 
Long wall 2 
Short wall 1 
Short wall 2 



Number 

1 

2 
3 
4 



Using this code, the assignment 
C(1)+4 would mean that post- 
hole 1 is on short wall 2. 

The next program segment, 
also written so as to be initiated 
by pressing any key, is: 
130 GET C$: IFC$=" " THEN 
GOTO 130 

140 REM FIND DISTANCES 

FROM AXIS 

150 MAX=0: MIN=0 

160 FOR K=1 TO 12 

170 E(K)=YPfK)-M*XP(K)-CC 

180 IF E(K) > MAX THEN 

MAX=E(K) 

190 IF E(K) < MIN THEN 

MIN=E(K) 

200 NEXT K 

210 REM CLASSIFY EACH 

POST-HOLE 

220 FOR K=1 TO 12 

230 IF E(K) > 0.7*MAX THEN 

C(K)=1: GOTO 300 

240 IF E(K) < 0.7*MIN THEN 



C(K)=2: GOTO 300 
250IFABS(M}> 1 THEN GOTO 
280 

260 IF XP(K) > SX/12 THEN 

C(K)=3: GOTO 300 

270 IF XP(K) < SX/12 THEN 

C(K>=4: GOTO 300 

280 IF YP(K) > SY/12 THEN 

C(K)=3 

290 IF YP(K) < SY/12 THEN 

C(K)=4 

300 NEXT K 

After this, not forgetting to 
declare the arrays E and C, it 
only remains to draw the lines 
for each side of the building. 
This can be done by using the 
subroutine for finding and 
drawing a line four times, once 
each time for the points on 
each wall. This is done by the 
final section of the program, 
which is: 

310 FOR Q=1 TO 4 
320 NP=0 

330 FOR J-1 TO 12 

340 IF C(J)=Q THEN NP=NP+1: 

X(NP)=XP(J): Y(NP>=YP(J) 

350 NEXT J 

360 GOSUB 3000 

370 NEXT Q 

The complete program for 
drawing the plan of a house 
from an approximately 
rectangular pattern of post- 
holes is listed in Figure 5. 
Remember that when it is run it 
draws the pattern of post-holes 
and then waits for you to press 
a key before it draws the main 
axis. Then it waits again for you 
to press a key before it draws 
the walls. 

Further Developments 

The way to investigate the 
capabilities of this program is to 
try it out with different sets of 
data. Trying several sets will 
give a feel for what is meant by 
phrases such as 'more or less 
rectangular' and 'more or tess 
the same distance away'. If you 
try changing the number 0.7 in 
lines 230 and 240 at the same 
time, you will find that you can 
adapt the program to deal 
successfully with any reason- 
able data. The next step, of 
course, is to generalise the 
program so that it adapts itself 
to the data it is given. I think 
you will find that this program 
shows a degree of 'intelli- 
gence', and if you can make it 
adapt itself to different 
situations, you will have made 
it more intelligent. 



71 



Runecaster delves into some 
dungeons and dragons game s] 
and faces danger and death. 



New and Devious... 

GLOBAL IS A RELATIVELY NEW NAME 
in computer software and if the 
company's first adventure game - The 
Magician's Ball - is anything to go by it will 
he worth watching out for in the future. It 
is by no means perfect as there are several 
anomalies apparent in playing it... but 
nevertheless the presentation and the 
command structure are good and 
sufficiently different to make it worth 
your attention. 

The program is on cassette only and 
will run on the C64 (or C128). A fast loader 
is incorporated and the program will load 
in just over four minutes. The screen 
display is colourful and the text easily 
read, with the graphic picture of your 
location occupying a small rectangle in 
the top left corner. 

The graphics are not particularly 
exciting but are clear and are 'drawn' very 
rapidly. Occasional use of sprites adds 
some movement that gives a little life to 
the scenes. Unlike some games the 
pictures, although simple are quite 
different and easily give quick visual 
recognition to one's location. 

The main location description is to the 
right o,f the picture and contains plenty of 
information to build quite a fair mental 
image of your surroundings. Visible exits 
are indicated and input commands are 
entered at the bottom of the screen. 

The 12 line 'window' between the 
description and the command line will 
contain additional information on what is 
seen at that location - creatures, objects 
that can be carried and even what other 
creatures are carrying! 

Briefly, the storlyine is that an evil 
magician has abducted a beautiful 
princess from her father's side; you - Caro 
- were there at the time and in a foolish 
attempt to rescue the girl... got swept 
away by the magician's magic as he 
returned to his own domains. You are 
now in the magician's realm and... on 
your own! 

Input commands may consist of 
reasonably complex sentences and also 
permit you to tell other characters what to 
do. A very interesting feature of this 
adventure is that you can swop 
personalities and 'control' some of the 
other characters you meet in your travels. 

The normal 'save game' facilities are 
actioned with 'saving' and 'loading' times 
of just under two minutes but another 
neat trick from Global is the 'Quicksave' 
and Quickload'. These are implemented 
by pressing the Commodore key and 
either 'S' or 'V. 




Ci)p itlagicunt's Pall 

58,111 9 




This 'save' option almost instant- 
aneously stores your present position into 
a protected area of memory. A very useful 
command if you think youareabout tobe 
killed or even to create a 'fall back' 
position if you are not sure of your next 
few moves. 

Eurther 'user friendly' options exist in 
the input command area - not only can 
you delete an unwanted letter by using 
the delete key in the normal manner but 
you can delete the entire command with 
SHIFT and CLR. 

Pressing '(a)' repeats the last command 
and keying the left arrow key (top left of 
the keyboard) recalls the last command 
for you to modify if desired. I think it is 
facilities such as these that make Global 
worth watching in the future. User 
friendly games are worth cultivating! 

The operating system may be user 
friendly, the game is in many ways just 
plain devious! All the clues are there but 
you may have difficulty seeing the wood 
for the trees. There are several 'red- 
herring paths' and the number of objects 
you can carry is not always as great as you 
may wish - perhaps you should get 
someone/something to carry them for 
you! 

Throughout your journey, you travel 
to musical accompaniment from Tubular 
Bells', this provides a pleasant interlude as 
you sit back to ponder your next move. 

There are the anomalies I mentioned 
earlier but these do not alter the game 
play in any way - they mainly appear as 



various characters saying something that 
has no useful or significant purpose! 

There are also a number of situations 
where you will have at one location, two 
(or more) items that although different 
are similar - a gold and an ornamental 
key for instance. It is worth dropping the 
one you do not want to use at another 
location as the program sometimes finds it 
difficult to understand what you want it to 
do! 

The Magician's Ball is good fun and 
both novice and experienced adventurers 
should find something in it to enjoy. 

Old But Faster 

Once upon a time there were no C64s or 
C128s. I know that is difficult to believe 
but it's true. There were PETs and Ataris 
and TSR 80s and quite a number of 
programs for them. 

Amongst these there were also a 
number of adventure games that closely 
followed the general idea of Dungeons 
and Dragons, with lots of monsters to 
meet in battle and treasure to be found by 
the bold and daring. 

They caught the imagination of 
thousands of home computer users in 
America (the land of their origin) and 
there were even competitions and 
conventions where adventurers of like 
mind could compete against the clock to 
prove their prowess in the worlds of 
dungeons and magical tombs. 

One of the favourites was called The 



72 



Adventures 



Temple of Apshai. At that time, with the 
exception of the Atari, none of the home 
computers had what we could call hi-res 
graphics and as it was not written for the 
Commodore machines anyway, the 
conversion for the PET was sadly lacking. 

The graphics showing the rooms and 
corridors around your character, took an 
age to be 'drawn' to the screen, the action 
was slow, the response to your commands 
(and there were plenty of options) was 
painfully slow and last but not least the 
keyboard buffer was not cleared. 

This last 'fault' wasdiabolieal. because, 
with the slow response to the input 
commands (all single key) there was a 
high probability that you would press one 
or more keys several times trying to either 
evade or attack a monster with the 
consequence that your character would 
still be striking at the monster long after it 
had been slain! 

Even a fairly recent conversion for the 
C64 still exhibited many of these 
shortcomings making the game tedious 
dnd boring to play. All these half-hearted 
attempts were really a great shame 
because the original concept was worth 
playing. 

I am pleased to report that at long last, 
a playable version has appeared for the 
C64. This is a new (yet another!) inter- 
pretation entirely, with far superior 
graphics, faster playing all round, no 
keyboard buffer problems and to cap it 
all, not only The Temple of Apshai but also 
on the same disc, the two additional 
adventures that followed: Upper Reaches 
of Apshai and the Curse of Ra'. 

The Temple of Apshai Trilogy is 
produced by Epyx Computer Software 
(Impossible Mission, SummerGames etc.) 
and is distributed in the UK by US Gold. 
One other vital fact is thai the three-on- 
one-disk will retail for only £9.95! 



characters given a random rating (from 1- 
18) for their six basic attributes: intel- 
ligence, intuition, ego, strength, con- 
stitution and dexterity, together with a 
limited amount of silver pieces with which 
to equip themselves. 

You may enter a previously 'saved' 
character from disk or you may enter the 
attributes of a known character from 
some other game. Or you may restore a 
previous game 'saved' at any point within 
Apshai. 

Your character is 'named' and is your 
own persona' within the confines of the 
game. If you start from scratch then you 
will have to buy the various pieces of 
equipment you think you will need - from 
the innkeeper. 

This is an art in itself as you must learn 
to haggle with him to get the best 
bargains. Pay the asking price and you will 
end up with very little equipment! 

Choice of equipment is fairly 
important. Various swords are on offer 
but if you do not have a great deal of 
strength then a two handed sword will tire 
you quickly. A small shield may be very 
effective if you have high 'dexterity'. 

The status screen shown throughout 
your adventures in Apshai shows wounds 
and fatigue, the lower percentage of 
wounds the nearer you are to death. The 
lower percentage of fatigue the less 
energy you have to fight or run away. 

Wounds may be healed over the 
passage of time or through the use of 
'healing salves' or 'elixirs', the former may 
be purchased from the innkeeper, the 
latter can be found within the rooms and 
corridors of Apshai. 

Fatigue may be restored by moving 
very slowly, resting or by firing arrows! 
The heavier your equipment or treasure, 
then the more fatigued you will become. 
Having beaten the innkeeper down in 



: — J _i I 



magic arrow. 

There are also a number of special 
commands you may use, such as 
examining a wall for secret doors, 
opening doors, searching for (raps, 
picking up treasures, listening for 
monsters, talking to monsters, healing 
yourself with salves or elixirs, checking 
the inventory of your treasures or saving 
the game or character for future use. 

As you may now be beginning to 
understand, the Temple of Apshv Trilogy 
is a little more than a straight-forward 
'monster bashing' adventure game. A 
little thought is also required if you are to 
last any length of time within its 
dangerous environs. 

The option of defining your own 
character has got to be double edged. It is 
all too easy to give your character 18 
points for all attributes. This strikes too 
close to, dare one say. . .cheating? 

On the other hand, pressing 
RUN/STOP RESTORE if the attributes 
given to you by the innkeeper are 
particularly poor does give you the 
chance to improve on the random attri- 
bute system. . .after all there are various 
magical items to be found that will 
increase some if not all of your vital 
statistics! 

Most levels of each realm have 
between 50 and 60 different rooms, so 
there is plenty to explore. Some monsters 
are 'tied' to particular locations but there 
are also plenty that wander around just 
looking for the odd human. 

If you choose the right realm and level 
it is not too difficult to increase your 
experience and treasure but venture 
deeper and things become a little more 
difficult! 

Should the worst happen, then there is 
still a chance thai all is not lost. If you 
come lo an untimely end one of four 



win icidii ivfi uniy &7. 7j: 

If you have the slighlest inclination 
towards monster bashing', then these 
programs are for you. Even if you are only 
barely interested then the Temple Trilogy 
is worth considering, purely as being a 
classic of ils type. 

The instruction manual for the trilogy 
k some 80 pages long and covers all the 
isic rules for playing, together with a 



ndvuig ueditMi me innkeeper uown in 
price and purchased a sword, armour, a 
shield, bow. arrows and a few healing 
salves, you are ready to enter Apshai. You 
have the choice of which realm toexplore 
and at whal level. 

Each realm has four levels and for 
Dungeons and Dragons followers levels 
one to two are appropriate to third level 
characters and the lower levels are more 



come 10 an untimely end one ot lour 
things may happen, you may get eaten by 
a wandering monster... bye-bye, or you 
may be found and resurrected by one of 
three 'friends of the dungeon'. 

One will do this for nocost. other than 
the request of a donation to his holy 
order, the other two will extract varying 
degrees of payment. So what? You are still 
alive and able to add to your valuable 



udsii iuies iui pidymg. logeiner wnn a 
room by room description of the various 
locations. The graphics representation 
shown on the screen simply depicts a 
series of rooms and joining corridors. 
It is not absolutely necessary to read 



Liididiieis dim ine lower levels are more 
suited to fourth and sixth level characters. 

Once you have set out on your present 
quest you have a number of commands 
available to you. The latest version of the 
Trilogy allows for the use of a joystick, 



anve ana aDie to aaa to your valuable 
experience. 

If you 'save' your character afler each 
foray into the unknown, you should be 
able to gradually build up a better 
powerful character. After each return to 



the descriptions but it helps set the scene. 
You will also need to refer to the manual 
to cross-check against the various 
treasures that you find. 

The three scenarios provided by the 
Temple Trilogy are in many respects 
compatible with many non-computer 
role playing games. You may even 
'convert' an existing character in one of 
these to venture forth into Apshai. When 
you first start playing you are given several 
choices. 

You may start from scratch, with your 



with ihe four directional movements 
giving you 'turn 90 degrees left or right', 
move five feet in the direction you are 
facing or rest. 

The joystick, with the fire button 
depressed, also offers normal attack, 
parry, thrust (all out attack) or fire a 
normal arrow. 

Single key commands from the key- 
board also allow you to: move forward 
from one to nine feet (keys 1-9), turn to 
the left, right or turnabout (180 degrees), 
attack, thrust or parry, fire a normal or a 




the inn, the innkeeper will pay you for any 
treasure you have collected and you will 
have the chance of adding or improving 
your equipment. 

Just remember the restrictions that 
super heavy weapons and armour place 
upon your movement and energy usage. 

Also remember that copies of the 
poorer version of Temple of Apsahi are 
still around, make sure you get the latest 
version. You want to spend weeks over 
the game not hours over one move! 
Happy hunting! 



Communications 



, iea ||y good news is that it's 
n updating messages. 




TS B«N A HECT.C MONTH ^ THE 
world ot Co- S Some se 
decided to P. u ' " P an '^nced and new 

didn't help things either! 



Chatting! 




everyone ^'^pi't'inorde., 
'"" ed TefotSat. ha' spruced. 

and send It. keying ; » 2 « sen , 
Quickchat I 2 a A n S d ^:,„ B ,i,e the pre- 
,hey are displayed ana there is no 

vioU s message. bu , , und er- 

cta r,nt;non-Mic™ne. subscribers do 

^^SCSSIS; one and 

-r-Hi-a,heoid 

previous messages can use e!s . 
Service of which ^ he messag e 

S'lr^S^' costs 2 P a 



message. The 
much fasier 

Buttons 

haS a ' S ,° trrlbe and offers a number o 
Prestel subscriber^ an ^ w „ 

quizzes and games to play ^ as 

1 doubt ^.XgeWs »»•»«"« who 

^^hTprlc^Microne, sub- 

scribers. rhatline of its own. 

Buttons also has ,a Chat t ^ 

The interesting P°J"' ^Subscribers, and 
open access to a I Presw s su ation 

; s m ^rn^ingrAbTto.ari P -of,a,7pa 
message though' 



which you pay « bV upload and 
Srad ,o Y °yo U ""ea„'s content until 
your credit runs out. „„, c all 

Confused! ) an V* uln ber which is 
Compunet on its new 

° 1 - 9 Aorfon CNET Proper next month 
when I get my 64 fixed. 



Compunet Costs 



new three tier No! Well it 

a ,ion s.nce 1 ol people haven t 

would appear that i lot o p v 

so here are some co5ts t7 .50 

The basic rate subscnp |ree 
per quarter and P ro vrfes y ^ co 
courier service and six n a casn 

lime p e, quar te- . Unless ^y ^ 
account where you s n<jt fae 

Compunet of ^.^o. purchase items 
able to do any upload °' P n ^ ion 

c-*"jsr * : " h commodore 

-l^ose who are not^t sublets. 

lake h ,rom me i that th s^P ^ ^ „ 
,ion is duff, you are -ar I0V ,des 
standard rate subscnp «»" off- 
free courier service," loa ded 
peak connecuon and 500 ^ 1(jp _ 

frames. Basic rate h costs £10 

^ua^dwi.l-cVargedn.SOper 

qU wtth a Standard rate subscription ,. is 



The News! 

m ay have announced a m a , ^ 

CNET. It IS j U that fits inside the OEL 
has designed a ch,p,h at Ms- b[eak , he 

comms package. Th.s^ h on 

consists of a d " k »"°S Apparently you 
Wnetd«SC^n 

k^W^ ^ ^ ' 

duplex modem'. • Miracle 

Vanwhile the big boys « ^ 

Technology. J»« P'^ing 1200/75 
Multi Modem fori!". e r and 

and 300/300 bau ^V' _ the cartridge port 
auto-dial it conne ts o the ROM) 
g^du^bt^narandPrestelcompati- 

biliiy- 



The Wind Up 



Havel no, informed you of something! 
Do you know someth g 

happening In he Com , lea5 e!) by 
don't? Then inform m tH preste , 
sending a message , to m q 
919992677 or ComP"^ me a letter (a 

$sr&& "** c/o Your 

Commodore. 



CORNE 



f- AIR • COMBAT ■ EMULATOR • £10.95 

■ BY CASCADE GAMES ■ #iaV*C I AND POSTAGE 

>OuaPBlhekSliEWerpWwflhcrtv»iree |\ 
ACE Ktai2lmJ1l<oleAJIWwt»All H •^■■M 



The AIR CO*A' EMLLATOP. pocked with 
ecllig)«j*i«.6byl(ilie(afloF.'TOfl 
recfcftc ftcf wnJOtor cm*Ob. fa Ihe 
to lime ona heme computer, (eel what it a 

r«^lhetolVoN^certanKrcerrillW¥ 
jefarxlergcge tanks, missiles, shps. 
hefcopler guv*fce aid two types d 
currg indigent €ren^ aKntfl 

fealjrg over 300 sproe rages. ACf 
hes the smoothest, mat debated cockpit 
Wewd hlb. leaandc^gfourd otiecrs 
»m* achieved ftrks to i*xx#» 
awi»n DvranK Graphc lechrtaye 
M^Y. e ) (Jkwi-Q wrwtm» hgh ©eea 
ioM:&pj*hcs. 

n cental, you head w* sph as you 
s^ggte -Tth to help fre aavonced 
avfc>to which hcudea rea-view camera 
crd raw. to Say ofte fcrg e«xgh to do 
sane domoge to te enemy 

The irlque two seat llyfrg option (pilot. 
rxwgokxVeapcrisrTan)ardBurai«o 

aran© which poses vital dojfi 
ccrdtian Harnofcn to fie Ight oew 

dyrornC tactoal map. take ofc aid 
terdhgs summer. wHer and righMlme 
flytg crd a rerrofcobV psoMc In-flight 

■fanhciQpla reds U t N (wata 

APCOAMEKUATOR 
ACeSCfNAINO 
A vast reason Heel ha breed on your 
soulhein shores and dschaged scores d 
Ortt supported bvreSccc^gunWi 
and preceded by nKfcle surface 0 dr 
mMes. SayoOrcfo oi enemy fighters give 
the Bnemy laces air cover Adwororcj 
njWessfy tiey ae ccrqjenrg your 
hemekxd. kicirg no cppcsibfi 



2 the lastflgrrtBrpid wflh crty free 
ACE KVrt 21 mumfoteAH Woofer All 
tenon J*U/ecorrtcflc*c>arl tvosedd 
analed akbose. you to* 6 to attack and 
dssloyreruTenoalvsuxnotQremy 
lard and at taces and dive them Horn 
you shoes. The (Vol stage at the conflct. 
Fortig arajJy XTf:',*!] !'>:■ iner-v kre 
ton»ardshaaownlh»o*torce.istosr* 
Be enomy test as it evaaota its defeated 
amy 

ACf - EXPERKNCe II NOW 

( vefyecmpjiot game ten wfl love ACE - 
Jiri leak at Ihese leatucs - 

• ICW opnmfled mcchre code uses alt 
ovoJabte memory. 

• feauing DranK Graphic TocftTowis 

• "•»: ':r--r rjvj •-,<• >•>..; 
cockpit view of cry tight smJofion. 

• Views of hfc trees, tanks and Cher 
ground cCiecri Aeral cental, gard 
croc*, and rovat attack 

• Suoiu e ihe speech 
does rot freeze tie acton. 

• hvoseatoptai-lyand 
fight w*h head at a 
trend 

• Sef6atkra30si*d 
oting wietanedjpopnic! 
isovrgGysjem. 

• jyj/ e optiafton [Al Vtedher Al lenanl 

• Note due to memory IrrWolons ACt an 
reD6croV)C3]|+WPom)abrc*rcMt 
crvg^junaobpects 





CALCULATOR WATCH 

Mooe*CaKvlaio<Mofto 



VMM 



REE!!! 





Order ACE today and 
receive this fantastic 
20 KEY MULTIFUNCTION 
CALCULATOR WATCH 

ABSOLUTELY FREEH! 

DDIf^C £10.95 (CBM 16 and 
rKIV^L VIC20E9.95) 

Postage FREE in UK. Add £1 for overseas orders. 
Allow 28 days for delivery. 

t enclose ctieque postal order (or (£ (mode payable 

to Ctascade Games LW. 

Or tr»ougf> any Pest Office by Transcash (Gfo No. 655 6655). 

For even (astef Ofdenng when c*x»g^toAcx^,Bcfclayccrdc»KJ 

Trustcard Vaa use our 2 A r* service (Tel 0423 504663) 



F"5 



IJ064 

HO plus a 

NAMF 



ENTER CREDIT CARD NO IN BOX: - 









□ OVIC20(with8K 
expansion) 



ADTWSS. 



POSICOW. 
COUMTPV_ 



ACE -EXPERIENCE IT NOW! 



Please complete and send to- 
Coscode Gomel Lid 

1-3 Havwro Crescent 
HcflGCjatoM&15BG fjigland 




ooo 

o 0 © 

S3 O O 
E3 ED CO 




Derek Moody gives 
more control to your 
lingers with this article 
for the C16. 



I PURCHASED A C16 AT THE 
end of March but horror of 
horrors, here was yet another 
Micro supplied with an in- 
adequate manual. Commo- 
dore suggest that you should 
buy their Programmer's 
reference guide, but that 
doebn't even contain a memory 
map, let alone operating 
system entry points or 
connector pinouts. First of all, I 
needed a decent keyboard 
control routine, so I 
disassembled the ROM and 
starting searching for the 
necessary information. This 
article is based on some of (he 
results. 

The C16 detects keypresses 
and stores them, even when 
the computer is doing 



something else. This is possible 
because the keyboard is being 
read in an interrupt routine, 
this routkie also maintains the 
real time clock and does a 
certain amount of house- 
keeping for the operating 
system. The IRQ interrupt 
routine is called 60 times each 
second, and there are three 
points at which it is vectored 
through RAM, at $312, $314, 
and $316. The vector that will 
be of most interest to" us is at 
$312, the computer refers to ii 
after most of the house- 
keeping, but before updating 
the real time clock and reading 
the keyboard. A vector, by the 
way, is an address held in two 
bytes of RAM, which points to a 
block of machine code in 
ROM, by altering a vector, the 
programmer can cause his own 
block of code to be used 
instead. 

The keyboard is read by a 
short, 10 byte routine at $DB70 
this works by writing the 
contents of the accumulator to 
the columns of the keyboard 
matrix, and reading the rows 




Program Listing 1 



REM 
REM 
REM 
REM 



C16 KEYBOARD MATRIX DEMO 



BY DEREK MOODY APRIL 19E4 



10 
11 
12 
13 
20 
40 
50 
60 

97 : 

98 REM CONTROL ROUTINE 

99 : 
100 
1 10 
120 
130 
140 
997 : 

99B READ MATRIX, AND PLOT RESULTS 

999 : 

1000 XX7.= 1 

1010 FOR X=0 TO 7 
1020 : POKE D7.,XX7. 



TC7.=3072+41 
D"/.= 14335 
GOSUE 3000 



GOSUB 2000 
DO 

: GOSUB 1000 

LOOP 

END 




Program Listing 1 (cont) 



1030 
1040 
1050 
1060 
1070 
1080 
1090 
1100 
1110 
1120 
1130 
1140 
1997 
1998 
1999 
2000 
2010 
(110) i 
2020 
2030 
2040 
2050 
2060 
2070 
2080 
2090 
2100 
2110 
2120 
2130 
2140 
2150 
2160 
2997 
2998 
2999 
3000 
3010 
3020 
3040 
3050 
3497 
3498 
3499 
3500 
112 
3997 
3998 
3999 
4000 
4010 
4020 
4030 
4040 
4050 



: SYS (D7-+1) 
: R7.=PEEK<D7.) 
: YY%»1 

: FDR Y=0 TO 7 

: CX=32 

: IF <R7. AND YY7.) THEN C7-=160 
: POKE TC7.+Y*120+X*3,C7. 
: YY7.=YY7.+YY7. 
: NEXT Y 
: XX7.=XX7.+XX7. 
NEXT X 
RETURN 
: 

PRINT MATRIX 



FORMAT ON SCREEN 



SCNCLR 
PRINT"I/D 3 
; " ";CHR* (95) 
PRINT: PRINT 
PR I NT "RET W 
PRINT: PRINT 
PRINT" # A 
PRINT: PRINT 
PRINT" HLP 4 
PRINT: PRINT 
PRINT"F1 Z 
PRINT: PRINT 
PRINT"F2 S 
PRINT: PRINT 
PRINT"F3 E 
PRINT: PRINT 
PRINT" © SHF 
RETURN 



INITIALISE MACHINE CODE 
■ 

FOR PTR=D7.+ 1 TO D7.+ 14 

: READ CODEX 

: POKE PTR,C0DE7. 

NEXT PTR 

RETURN 

* 

MACHINE CODE DATA 



5 7 9 ";CHR*(109) ; CHR* 



R 


Y 


I 


P 


* C/H" 


D 


G 


J 


L 


; CTR" 


6 


8 


0 




-> 2 " 


C 


B 


M 




ESCSPC" 


F 


H 


K 


■ 
■ 


= COM" 


T 


u 


□ 




+ Q " 


X 


V 


N 




/ R/S" 



back into the accumulator, the 
X and Y registers are preserved. 

The keyboard matrix is 
shown in Figure 1, to select a 
column for reading, that 
column should be pulled low 
by writing a zero into the 
appropriate bit, whilst all the 
other columns should be held 
high, ie., bit value 1. Therefore 
to select column 2, the number 
required is, in binary 11111011 
or $FB or decimal 251. If no key 
on that column has been 
pressed, then the number 
returned will be 11111111 or 
$FF or decimal 255. If, however 
any key on that column has 
been depressed, then the 
appropriate bit(s) will be zero, 
for example, if both C and T 
were pressed, then the 
number would be 10101111 or 
$AF or decimal 175. To examine 
every key, requires the routine 
to be called eight times, once 
tor each column. To detect 
whether ANY key has been 
pressed, send a zero to all 
columns, and if the returned 
value is not 255 then one, or 
more, keys must be pressed, 
although which key(s) will not 
be obvious. 

The advantage of using this 
routine rather than the BASIC 
GET and GBTKEY statement lies 
in the ability to detect and use 
multiple keypresses. PROG- 
RAM 1 serves as a useful 
example and testbed. When 
RUN the program presents 



DATA 
219 



173 , 
, 73 



255 

, 255 



55 



73 



255 



32 



141 



255 



55 



96 



DISASSEMBLY OF MACHINE CODE 



3800 
3803 
3805 
380B 
380A 
380D 



AD 
49 
20 
49 
8D 
60 



FF 
FF 
70 
FF 
FF 



37 



DB 



37 



LDA 
EOR 
JSR 
EOR 
STA 
RTS 



$37FF 

#$FF 

*DB70 

tttFF 

J37FF 




Program Listing 2 



10 
1 1 

18 
13 
20 
30 
40 
50 
60 
70 
80 
90 
97 
98 
99 
100 

1 10 

120 

130 

140 

150 

180 

190 

197 

198 

199 

200 

210 

220 

230 

240 
250 



REM C16 GOBBLERS 
REM 

REM BY DEREK MOODY APRIL 1985 
REM 
: 

DIM PLX< 1 ,500) 
TCX-3072 
SCNCLR 
OX- 14335 
GOSUB 2500 
POKE P1X,81 
POKE P2X,87 
t 

REM CONTROL ROUTINE 



DO UNTIL T 
I GOSUB 200 
I GOSUB 600 
I GOSUB 300 
LOOP 

IF T-P1X THEN 
GOSUB 2000 
END 
I 

GET MOVES AND 
1 

SEX-2 

GOSUB 500 

P1X-P1X+MOVEX 

SEX-32 

GOSUB 500 



Figure 1 - Keyboard Matrix COLUMNS 

0 12 3 4 



6 



Efl 



CO 



INST 
Df I 



RET 



HELP 



F1 



F2 



F3 



W 



D 



8 



B 



H 



U 



0 



M 



K 



♦ 



♦ 



ESC 



□□□□□HDD 



S2=S2*iei0:ELSE S1=S1+100 



UPDATE POSITIONS 



P2X-P2X+M0VEX 
260 RETURN 

297 i 

298 INSERT RANDOM 'STARS' 

299 i 

300 IF INT<RND< 1 >*10> THEN RETURN 
310 STX-TCX+INT<RNO< 1 >*1000) 

320 IF PEEK<STX><>32 THEN RETURN 
330 POKE ST"/., 42 
340 RETURN 

497 t 

498 CALL KEYBOARD ROUTINE AND 
CALCULATE MOVE 499 : 

500 POKE DX,SEX 
SYS <DX+1) 
RX-PEEK<OX) 
MOVEX-0 

AND 2) THEN MOVEX-MOVEX-40 
AND 4) THEN MOVEX-MOVEX- 1 
AND 16) THEN MOVEX-MOVEX+40 
AND 32) THEN MOVEX-MOVEX+ 1 



0 



COLUMNS 
1 2 3 4 5 6 



0 — 

1 — 

R2- 

S4- 

5- 

6 _ 

7 — 

Figure 2 — Single Keypress 



510 
520 
530 
540 
550 
560 
570 
580 
590 
597 



<RX 
<RX 
<RX 
<RX 



IF 
IF 
IF 
IF 

IF MO VEX 

RETURN 

I 



THEN SOUND I NT (SEX/30* 1 ) ,2 00+ SEX, 4 





Program Listing 2 (conl.) 



598 
599 
600 
610 
620 
630 
640 
645 
650 
660 
670 
680 
690 
695 
697 
698 
699 
700 
710 
720 
730 
740 
750 
760 
997 
998 
999 
1000 

1010 

1020 
1030 
1040 
1050 
1060 
1070 
1080 
1090 
1 100 
1 1 10 
1 120 
1 130 
1 140 
1150 
1 160 
1 170 
1180 
1 190 
1200 
1210 
1997 
1998 
1999 
2000 
2010 
2020 



UPDATE 8CREEN AND LOOK FOR COLL 18 IONS 



P1'/.OPLX<0,S1X> THEN T-P IV.i RETURN 
MOVE>; THEN T-P2X » RETURN 



Tl*/.-PEEK(Pr/.> 
T2X-PEEK<P2X) 
IF T15044 THEN IF 
IF T2X>44 THEN IF 
GOSUB 700 
PLX<0,S1X>"P1>: 
PLX< 1 ,S2X)-P2X 
POKE P1X,81 
POKE P2X,87 
POKE PL*/.<0,E 1X> ,32 
POKE PL%< 1 ,E2X> ,32 
RETURN 
I 

HANDLE ARRAY AND TAIL 
i 

S1X-S1X+HIF S1-/O500 THEN S1X-0 
1 IF S2%>500 THEN S2X-0 
IF T1X042 THEN E1»EIX+1*IF EIK>500 THEN 
IF T2X042 THEN E2X-E2X+1HF E2X>500 THEN 
IF Tl»42 THEN SOUNO 1,500,10151*51+10 
IF T2»42 THEN SOUND 2 ,300 , 10 < S2-S2 + 10 
RETURN 
I 

SETUP SCREEN AND INITIALISE PLAYERS 
I 

FOR X-0 TO 39 
I POKE TCX+X,102 
I POKE TCX+960+X, 102 
NEXT X 

FOR X-39 TO 959 STEP. 40 
t POKE TCX.+X, 102 
i POKE TC'/.+X + I , 102 
NEXT X 
Pl»TC%+490 
P2V>TC"/.+510 
SIX- 1 
S2X- 1 
El X-0 
E2'/- 
T-o 

PLX<0,S1X>-P1X 
PLXC 1 ,S2X)-P2"/. 
GOSUB 3000 

51- 0 

52- 0 
VOL7 
RETURN 

I 

PRINT SCORES AND END GAME 
l 

PUDEF-0" 
PRINTCHR*< 19 > 
PRINT 



E1X" 
E2X' 



0 
0 



an on-screen picture of the 
keyboard matrix, if any keys are 
held down, then the relevant 
matrix position is indicated, 
note that in this case the keys 
must be held down as the 
BASIC routine takes a little over 
a second to record the current 
position. As the programme is 
written, it leaves the operating 
system keyscan untouched, 
when you have got the 
programme running properly, 
add the following line. 
70 POKE 786,190:POKE787,252 
SAVE this version of the pro- 
gramme before you RUN it, 
this steals the vector at $312, 
and points it to the end of the 
interrupt routine, thus 
bypassing the normal keyscan, 
and leaving BASIC with no way 
of reacting to the keyboard. 
The new version of the 
programme does not recognise 
the RUN STOP key, and allows 
us to experiment at will. 

In PROGRAM 1, TC% 
points top the top left corner of 
the matrix as it is printed on the 
screen. D%, points to the data 
byte through which para- 
meters are passed to and from 
the machine code routine, the 
machine code itself starts at 
D%+1- XX% is the value that is 
passed to the machine code 
routine, R% is the value 
returned. YY% is a value gen- 
erated for comparison with 



0 



COLUMNS 
1 2 3 4 5 6 7 

















































































































wmm 






















— — * — 








i - 



















0 
1 

£ 2 

S4 

5 

6 
7 

Figure 3 — Ghost Keys 





Program Listing 2 (conl.) 



2030 

2040 

2050 

2060 

2070 

2080 

2090 

2100 

21 10 

2120 

2130 

2140 

2150 

2160 

2497 

2498 

2499 

2500 

2510 

2520 

2530 

2540 

2550 

2560 

2570 

2580 

2590 

2600 

26 10 
2620 
2630 
2640 
2650 
2660 
2670 
2680 
2690 
2700 

27 10 
2720 
2730 
2740 
2750 
2997 
2998 
2999 
3000 
30 10 
3020 
3040 
3050 
3497 
3498 
3499 
3500 
, 73 



PR I NTCHR* < 1 66 ) > " 

PR I NTCHR* < 166 >f ■ 

PRINTCHR*< 166 >> " 

PR I NTUS ING "*#** • ; s l ; 

PRINT" " t 

PR I NTUS I NG "#*M* " ? S2 ; 

PRINT" #" 

PRINTCHR*< 166)? " 

PRINTCHR*< 166); ■ 

FOR X-0 TO 100 

: GET A* 

SOUND 3,33,1 

NEXT X 

RETURN 

s 

TITLE SCREEN 
SCNCLR 

FOR X-0 TO 15 
* PRINTSPC<X*2>; 
: PRINT-GOBBLERS- 
NEXT X 

PRINT 
PRINT" 
PRINT 
PRINT- 
PRINT- 
PRINT- 
PRINT" 
PRINT 
PRINT" 

PRINTCHR*< 19) 
FOR X-0 TO 11 
: PRINT 
NEXT X 

PRINT" GOBBLE 
PRINT" AVOID 
DO WHILE A*=" 
I GET A* 
LOOP 
SCNCLR 
GOSUB 1000 
RETURN 



* 



tttttt*«tttttttttttttttttt#tt»ttttH 



PLAYER 1 
U 

z 

A 

S 



PRESS 



THE 
THE 



STARS 
REST- 



TO OX+14 



INITIALISE MACHINE CODE 
! 

FOR PTR-DX+I 
i READ CODEX 
> POKE PTR, CODEX 
NEXT PTR 
RETURN 
I 

MACHINE CODE DATA 



DATA 173 , 255 , 55 
, 255 , 141 , 255 , 




R%, it is used to discover the 
state of each bit of R%. C% is the 
character poked to the screen 
display, it is set to either a 
space, or an inverse space 
according to requirements. 
You will notice that two of the 
arrow characters, which are not 
included in the standard 
character sets, had to be 
concocted from others. If you 
inspect the disassembly of the 
machine code routine, you will 
notice that the parameters are 
passed in an inverted form, ie., 
every 1 has been replaced by a 
0, and vice versa, this was done 
in order to simplify the BASIC 
logic, the values passed to the 
keyscan routine are correct. 

The keyboard is i n essence a 
set of switches that permit 
connections between eight 
lines representing the 
columns, and eight that 
represent the rows. By applying 
a voltage to one of the 
columns, and searching for a 
corresponding voltage on the 
rows, then a closed switch can 
be detected. For example, if 
the space bar is down, the 
voltage applied to column 7 
can be detected on row 4, see 
FIG 2. So far so good, but we 
have a problem, when you ran 
PROGRAM 1 you may have 
noticed that sometimes keys 
were indicated as having been 
pressed when you had not 
touched them, why? Look at 
FIG 3, on a simple matrix like 
this it is possible for switches to 
mask each other. If 'C', T, and 
'M' are pressed together then 
'O' is detected as well, go on, 
try it! What happens is this, 
when a voltage is applied to 
column 4, the closed 'M' switch 
passes it onto row 4, then the 
closed 'C passes it onto 
column 2, and finally the closed 
T* passes it onto row 6, where it 
is detected by the keyscan, of 
course a voltage applied to 
column 4 and detected on row 
6 means that '0' has been 
pressed, doesn't it?! This 
phenomenon will not often 
cause problems, but it has to be 
borne in mind when selecting 
control keys for games etc., it 
would not do, for instance, if 
hyperspace were selected each 
time up, left, and the fire keys 
were pressed simultaneously. 
As a spin off, next time you run 
an unprotected BASIC 
programme, press 'N', 'M', and 
the space bar all together, hey 
presto!, RUN STOP! 



PL%(array) List of player addresses. 

TC% Top left corner of screen. 

D% Parameter address (as programme 1). 

P1% Player 1 position 

P2% Player 2 position. 

51 Player 1 score 

52 Player 2 score. 
T Flag. 0. or 'crash position'. 
SE% Parameter passed to machine code. 
MOVE% Player position update value. 
ST% Random position of new star. 
R% Value returned from machine code. 
T1% Contents of new player 1 position. 

T2% Contents of new player 2 position. 

$1% Player 1 list start pointer. 

S2% Player 2 list start pointer. 

E1% Player 1 list end pointer. 

E2% Player 2 list end pointer. 

Note that PL% (array) is 
implemented as a circular list. 




Let's have a practical 
example, PROGRAM 2 is a two 
player game that requires the 
detection of eight keys, several 
of which might be in use at any 
time. Each player has to have 
controls for up, down, left, and 
right, and in addition we must 
permit diagonal movement. To 
simplify the input routine, it is 
desirable that all of one players 
controls should be on one 
column. It so happens that if we 
use column 1 for player 1 , and 
column 5 for player 2, then 
there are suitably placed keys 
for both players on rows 1, 2, 4, 
and 5. The machine code in 
PROGRAM 2 is identical to that 
in programme 1, and the 
keyscans are made in the 
subroutine at line 500. This 
time, rather than looking at the 
whole keyboard by means of 
eight column scans, only two 
scans are made, and the rest of 
the keyboard is ignored, 
however the interrupt vectors 
are untouched, RUN STOP still 
works. 

The programme is struc- 
tured for clarity rather than 
speed, but despite this the 
game is quite playable. 



The 



As wen in tho national press 



WINNERS 

of th^ ASP DREAM HOLIDAY Competition 

Argu^pecialist Publications Ltd. are pleased to announce 
of the fabulous Dream Holiday Competition. 



HRSTPRIZK 





-a holiday am w here in the world 
•up 10 a value of £2.500 has been 
awarded lo Mr K.Gouldthorp 
of: WoodMde Road. Radcliftc 
-on-Treni, Nottingham NG12 2HJ 

Se cond Prize 

-the very latest in portable video 
camera 'recorder (with mer 
moot goes to MrC K. Duffy 
of 63 Cross Flats Place. Becston. 
Leeds LS117JN. 

71 




I bird Prize 



the ever popular BBC Model B 
Microcomputer plus software 
package, awarded to Master P W. 
Dawson of II Ladicside. Bnic. 
Shetland ZE2 9SX 



And the winner ol the 



fourth prize 



a %uperh Minolta KT00 camera 
with M)mm lens and flashgun is 
Mr Lee Sullivan of ^ Admcrs 
Wood, Vigo Village. Mcopham. 
Kent DAIS OST. 



ASP would like to (hunk everyone who entered thccompeliium. 
and CONGRATULATIONS to MrGouldthorp for his w inning 
sentence which we've printed below 

"...to combat boredom by the beach, 
keep magazines in easy reach!" 




When you are designing a game one of the longest jobs is de- 
signing the sprites. If you are good at art then fine, if not your 
next monster will probably end up looking like a square box 
with legs. 

Now, Your Commodore comes to the rescue once again 
with Sprite Ideas. If you have designed any sprites for games 
and you don't mind other people seeing your masterworks 
then why not send them into us. Each month we will be offering 
£10 for the best entries. 

Your sprites can be anything at all (within reason), if you've 
designed a series of animated characters then send in the lot 
We'd love to have a look at them. 

So, next time you are after an Ogre to put in your new game, 
have a look in this section of the magazine and you may find 
just what you are looking for. 



uizard 


DATM,248,0,2,3O,O,2,28 
DATAC, 1,56, 0,1, 216, 0,2 


LEE GOODMAN 


DATA22C, 0.6. 222,0. 14. 223.0 


BERKHAMPSTES 


DATA3Q, 159.0.38,57.0,39,24° 
DATA0.39, 249.0.39.249.0, 27 
DATA254, 0, 3. 2.2. 9, 3, 252. C 
DATA3.254. 0.3.255. 0.3.255 
DATAO, 3. 255. 128.7,255. 192 




HOLMES - HEAD DATAO. 10. 128,0, 10,160.0.42 

DATA:6B, 12.170,168,0,5.252.48 
STUART JAMES DATA25.124. 0.85,124. 12, 5, 114 

BIRMINGHAM DATAC,61.90.60,197,!70,63.10 

DATAI36. 60, 10,174, 0,10,174,5 
DATA2.238.25:. 123, 174, 13. 122, 174 
DATA3.122. 250, 0.15,168.0, 2 
DATA:68,0,3.252.C.2,16e 




HOLMES. LEGS 


DATAO. 10,168,0.42,168,2.170 
DATA16B,2,17C, 160. 10,170,160. 6! 


STUART JAMES 


DATA207. 240. 63, 207,240. 15,243,252 


BIRMINGHAM 


0ATA15.243. 252. 3.252.255,0, 255 
DATA63, 0.63,42, 0,191, 42.0 
DA T A168,168. 10.168. 168. 10,136,0 
DATAO, 0,0, 0.3, 0,0,0 
DATAO.O.CO.O.O.C 



WA SON-HEAD 


AJTAA IA * lO A d "* (LA A ITA 




DATA160.2.1* 1,240. 0,33.240,0 


STUART JAMES 


CATA85.240.0.6I.5O.O.29.90 


BIRMINGHAM 


CATA0.2I, 170,0,2, 170,0,10 




DATAU8.«,4...~2..53.-35.194,5 




DATA235. 184, 13. 238,184, 0,58. 232 




ErTAC .23j > 169. j, 1. 3] 23 J. 21.. -0 




DATA168.85. 10,168. 116, 42.169 





GHOST 


DATA0.64, 0.0.224, 0.1, 176 




DA7AG.3.19,0. 51. 31. 128.123 


LEE GOODMAN 


DATA31.12B.12\19i. 0,63,254.0 


BERKHAHPSTED 


DATA:5, 248, 0.3.248,0.1. 252 




3ATA0.1. 252.0, 1.254,0,1 




DA*A254, 0.1.254. 0.3. 254.0 




DATA3, 254. 0,3. 254, 0,3, 254 




DATA0,7,255,C, 15,255, 128 



KATSCN - LEES 


0ATA48.42. 168. 48. 42.158.49,170 




DATA168, *B.25Z,252, 48.252.252.51 


STUART JAMES 


DATA243. 240.51. 243.240, 51. 240.252 


BIRMINGHAM 


DATA51. 240. 252.51. 240. 252. 51. 242 




DATA168.50.162.160. 58.138. 128, 59 




DATM28,O l b.O,0,C l C l $ 




OATAO,0,Q,0.0, 0.0,0 




DATA0, 0,0, 0,0,0,0 




CHOPPER 


DATAO.0,42, 170,170,0,8,0 


D DERRICK 


DATA0. 21. 0.64, 127,64,80, 127 


DATA208.B1. 255,244,81, 255, 253, 2! 


CHEDDAR 


DATA85. 85,5, 85. B5, 1,85,84 


DATA0. 0,0,0,0,0, 0,0 


DATAO.85,80, 0,48,195,3, 255 


DATAO.0,0, 0,0,0,0,0 


DATA252.0, 0,0,0,0,0 



Machine Code Entry— C64 



100 INPUT '[CLEAR, DOHN23ST ART ADDRESS " ; ADR 
110 PRINT "[D0HN21PLEASE ENTER ALL DIGITS.' 
120 PRINT" EDQNN21SPACES HILL BE ENTERED AUTOMATICALLY 

130 PRINT: PRINT ADR; a : " ; : GOSUB 260 

140 IF SI-'CFU" THEN GOSUB 330:60T0 100 

150 IF S$="[F33" THEN GOSUB 460:60T0 100 

160 REH READ DATA AND STORE 

170 CHECK=ADR-INT(ADR/256)I256 

180 FOR Ol TO 36 STEP 3 

190 N*=MD$(Si,C,3»:N=VAL(NI) 

200 CHECK=(CHECK*NIAND 255 

210 IF N>255 THEN N=0 

220 POKE ADR,N:ADR*ADR+1:NEXT C 

230 VFY=VAL(RI6HT$(S$,3)) 

240 IF VFYOCHECK THEN GOSUB 530:G0T0 130 

250 60T0 130 

260 S*=":F0R C=l TO 13: FOR L=l TO 3 
270 GET Kt;IF K$="GDT0 270 
280 IF K*= W CF11- THEN C=I3:L=3 
290 IF K$='[F31' THEN C=13:L=3 
300 SI=S§+K» 

310 PRINT K$; : NEXT UPRINT" : NEXT C: RETURN 

320 REH till SAVE YOUR FILE tilt 

330 PRINT' [CLEAR, DQNN2, RIGHT23SAVE FILECD0WN2] ■ 

340 INPUT-FILE NAME ;'jFt 

350 IF F$=" OR LEN(F$)>15 OR F*='Q' THEN RETURN 

360 INPUT'[D0NN3,RVS0N]TCRVS0FF]APE ORtSPC.RVSONJDIRVSOFF: 

ISK : D[LEFT33";DI 
370 Ml IF D»«'D' THEN D=8 
380 INPUT' [D0HN2JSTART ADDRESS IN DECIMAL :';S 
390 INPUT'IDQNNIEND ADDRESS IN DECIMALCSPC43 : E 
400 TS$=FI:T0=PEEK(53)+256IPEEK(54)-LEN(TS«) 

:P0KE 7B2.T0/256 
410 POKE 7Bl,T0-PEEK(782)t256:P0KE 780,LEN(TS») 
420 SYS 65469 

430 POKE 780,1:P0KE 781,D:P0KE 782,0:SYS 65466 

440 POKE 254,S/256:PQKE 253, S-PEEK (254H256: POKE 780,253 

450 POKE 782, 1.E+D/256: POKE 7BI, (E+l ) -PEEK (782) 1256 

:SYS 65496: RETURN 
460 REH Itll LOAD DATA Ittt 
470 INPUT'[CLEAR,D0NN2,RIGHT2IFILE NAME :"iF$ 
4B0 IF F$=" OR LEN(0$)>15 THEN RETURN 
490 INPUT'[D0NN3,RVS0N]T[RVS0FF]APE ORCSPC, RVSQN3DCRVS0FF 3 

ISK : D[LEFT3]";D$ 
500 IF DIO'T'AND DIO'D'THEN RETURN 
510 WlIF DI="D-THEN 0=8 
520 LOAD Ft, D, 1 : RETURN 

530 PRINT: PRINT' ED0NN2,RIGHT)ERR0R':ADR=ADR-12 

540 POKE 54296, 15:P0KE 54277,10 

550 POKE 54278, 100:PQKE 54273, 45: POKE 54272,00 

: POKE 54276,17 
560 FOR X=l TO 250: NEXT 
570 POKE 54276, 0:POKE 54277, 0:P0KE 54278,0 
580 RETURN 




ENTRY 




ENTRY 



We make life easier 



for you wilh our 



machine code entry 



program, 



THE WORST THING ABOUT 
Machine Code programming is 
entering thousandsof numbers 
and then finding that the 
program will not work. There is 
nothing else that you can do 
apart from go through all of the 
listing trying to locate that 
mistyped character which 
prevents the program from 
working correctly. 

Now there's an easier way 
to enter your machine code 
programs. With the Your Com- 
modore machine code entry 
program, each line of numbers 
is checked as soon as you press 
return. If you have made a 
mistake you will be asked to re- 
type the last line. Another 
added bonus is that you can 
save what you have entered at 
any time to tape or disk and 
carry on where you left off next 
time you come to your 
computer. 

Using the Loader 

Before you type in any machine 
code program you must have 
typed in the machine code 
entry program and have it 
saved onto tape or disk. When 
you want to enter any of the 
machine code programs that 



are printed out in the form 
used by this program you must 
LOAD it into your computer. 
When you RUN the program 
you will be asked for the start 
address of the program. The 
start address is the first number 
in any machine code listing that 
appears before the colon (e.g. 
49152:). You simply type in this 
number and press return. 

All that you have to do from 
then on is type in all the 
numbers on a line. Do not type 
any spaces and do not type 
return, the program will do all 
of that for you. If you have 
made a mistake on any line the 
computer will ask you to type 
the line again. Once the line is 
entered correctly the 
computer will automatically 
prompt you for the next line of 
data. 

Saving and Loading 

You can save your data to tape 
or disk at any time by simply 
entering the F1 key as the first 
character on any line. You will 
then be asked for the start and 
end address of the save. The 
start address is the first number 
in the listing as already 
mentioned. The end address is 
the number of the last line plus 
11. Don't forget to add 11 or the 
last line entered will not be 
saved. 

To load back a program that 
you have saved you simply 
have to enter the F3 key as the 
first item on a line. You will 
then be asked for the name of 
the program. 



Evesham 



giioo 



DATA *|CO*M> 
.k.i..' MM "> P*N 1» Ml 

n i-» r ns< ■ vw N V*"!*" 1 » 
C/N CU -«K bull*". MOW 

— I f *» C* n\un m I* ■ 1-" 

MTVUIK~ . • - ■■ 1 1 ■ 

OHV IN.*! 



i^wstot* 

nSi°rS£ 



■PWy^M^ "l _^^ a <»**P«Z v t ""***""a M ^ ) j 



WMtfri 



■ MTfel t** 1 1 



V3.0 



hi 



*t 

IMJ 





- mm £ -1' 



an 



FAST LOAD 
PIUS 

|| UTILITY CARTRIDGE 



CmjOUlO0WC*c*Tr»^f poggwrioycw 64»Vyour >S*I ** rNHylUrt te parterre to Itavn W. 
Fmi LOAD w»dJAyS (to* la m orm noniul spmn Worti *tlti now ptWIPO Kftwarr («i be iwa"*ll *i M 
'bi row uanjini 10 wrcnfe 

rnil«rM«iaprivrfWrraui^lmxa>un (Ma r**Mf i»wmrO w*r*f* 1 
fere m Ceplt* frivr uu icpynj 

ijMtMlOOScoiMuntn.tXHS tiawn^NrtuwoTiraiwanw rg MffTUM-«i(W)jr«<»i>u***r< 

u-r-iTOjii^wtrowyc MFTUUItfnSiOW 'AIM rv h«mN 

UworporM** Cwtronta printer ioNwm (WW DCtll CBM grapMa ,*«ly W Cownoooff Con- 

A«SfTnrit*^h»o f*f wvarcoiBiDDf »m»ett'.Biiv)pwn«rnrr«rou*'l 

NO MIMOTI IS IfllO If ttnijnirtj'. 41 4 HU>f D*Op#rnT *M Iflft WtO* Wtltf*iglftlw»t|Ufl 

ONl»t19.« 




5 



« 

1 

■x- 



It you're as 
tmpfnoed 
m wo aie 
with ihe now 
CommofJof* 
121. you? be 
oven moie 
Impressed with Ino new jonwao IhaT s 
•ppeohng lor < now" Already weVe 901 
SuperBase 128 <££lh«£ IBS.OO!), 
Superscript 128 (LI***' £ 69.95 •), 
and tho amazing VliaWrlte Classic 128 
(£>ft*S £89.00!).- so watch 0t9 space! 




Mhough we are by tar 
tho largest UK retailer 
cl SuperBase. VizaSiar 
andVc-aWido tot Ihe 
Commodore M, tor 
over five years we 
have supported 
the best soltwaro lor 
al the Commodore buannM machines! 
So it you have a CBM/PET 3000, 4000. 
8000. 700 or PC. then donl torgol us. . 
we havon'i torponen you! Why not ptiono 
or write lor our CBM PET catalogue? 




I J- Al Iho loaturos youTI over nood lor professional 

_ ./jh ly M word processing andlhonmoro! Unrivalled 
- a. (XTil/'w^/m 240-column lout hondSrvj, variable wldih 
It/^^-T^V" »«<»'>. word-wrap, cul-and-pasle. four-way 
S0*^ scrolling, document linking tor unlimited capacity, 

global aearch-and-replace. help screen, ful memory calculator, 
row and column arithmetic, menu or keyed commands wrth command strings, 
background printing. corrpWIe letter quality prinl faSMOi Spelling checker wilh 
boihUKandUS disk dictionaries, comprohonsrvo four part usor manual... 



OUR PRICE J6a>«S £58.951 ...WHILE STOCKS LAST t 

^CBOOKS 



The Anatomy ol A Commodore 64 £8.95 
Tho Anatomy ot the 1&41 Otsk Oiivo £8.95 
Your '64 Cassone Book £6.95 
Tricks and Tips lor your '64 £8.95 
Machine Language Book lor the 64 £8.95 
'64 Advanced Machino Language £8.95 
Pooks and Pokes lor the '64 £7.95 
Commodoio 64 Idea Book £8.95 
Graphics Book lot your '64 £8.95 



Are you a two- 
finger typist? 
Then why not let 
SuperType help 
you learn 10 touch- 
type Iho tail and easy way... wrth your 
computer as tho teacher! Al the larwly can 
loarn this useful ski". allhoH own pace 
and protil trom the very latest cornpuicr- 
aidod training and (eedback tochr-quos' 

OH TAPE £19^ £1 6.951 
ON DISK £2>*5* £21.95! 



Transform your Commodore 64 into a luU 
featured professional database sysiem. 
with up to 1000 characters per record on 
up 10 four screens ... and up to 128 Items 
per record, definable as key. tert. numeric, 
result or date in tiles ol up W 16 molon 
characters! SuperBase 64 even has calculator and calendar (unctions, easy Input 
trom word processor or data mos. both menu-driven and program control, sotting 
and searching, fully definable report and screen formats Superbase 84 Is essential 
rf you wan) the most fcom your 64! Supplied on 1541 disk with tnceeeni tutorial 
and roloionce manual, plus audio learning tape. 



NOW ONLY £7Jfc45 £69.95! 



Youi programs 
will roally 
_J take off with 
{/ / '-— JetPack 641 

* 100% compatible 

wilh CBM Basic. Jelpack compBes 
Basic programs into machine code. 

running up »o 25 times taster 
using up lo half as much memory! 
And il evon accepts Basic extensions 
and machine code routines as well' 

WHILE STOCKS LAST... £3>fl4 £29.95! 



, BUMPER 
^ BUNDLES! 

For a Hmlled period we con otter amazing 
savings on lop-oualiiy books & software Irom 
Fust Publishing Save £60 on Otter No 1 
(Fir si Word • First Base • Power Plan) 
for only £56.951 Save £20 on Offer No 2 
(Basic 64 compiler • Assembler Monitor 64) 
only £34.951 And save £10 on bosi-seiers 
Oflor N0.3 (Anatomy ol the 64 • Tricks 
ft Tips • Cassette Book)... only £16.85! 

Please stow 5 days' rJoavery. 



VIZ ASTAR 64 



Spreadsheet, 
database and 
graphics loo... 
HI integrated 
into 0110 amazing 

pack ago. al an amazingly affordable priori Tho very tatost design lochrwjuos comtww 
the ultimate m ease-ot-use w«h an the sophistication ol a tuffy Integrated producL.. 
VlzaSUrs advanced (oatures includo highspeed maths funchons. largo 1000 by 64 
workshooL programmab*ry. windows, col pioloclron. soarch and sort, kwt ecMing. 
wordprocossor compolibikty. aimullanoous graphics inlogralod with a 1000- character 
periocotd database, up to 2S0 charactors per liold.. the only product ol its kind tor the 
Commodore 641 Suits most printers, supplied wrth excellent handbook (XL8 version now 
avMUblewtha 40% bigger spreadshool plus business graphics. £12>»S £115.95!) 

OUR PRICE (XL4) NOW ONLY £74.95' 



VIZisWRlTE64 



A hlgh-pertormance. loW-cost 
wordprocossor, wilh lull on-screen 
lormathng. that takes ful advanlage 
oliho colour, graphics and memory capacifyoliho Commodore 64 that works with 
both dJak and tape . and supports v»1ua!ly any printer' Wilh a conceo and oasy-lo-lollow 
usor manual. VliaWrlte rs tho ultimate personal compulot word processor! (AvortabJO 
wrth VlzaSpell. a 30.000 word disk dicbonary and spoiling -chockor. (or £90 9S £65.00!) 

VIZAWRITE(OISK) «rM £67.951 (CARTRIDGE) £J9-#5 £78.95! 



SuporBase Slarlor (SAVE £10!) 29 05 
SIMON'S BASIC (SAVE £15') 35 00 
MASTER 64 (SAVE £30!) 39 00 
JETPACK (TAPE) 14.95 




EasyScrlpi to Superscript upgrade- 
send drsk and manual cover 44 95 
Superscript loSuporScripM26 57 95 
SuporBase to SuperBase 128 67.95 








WANT IT TOMORROW??? CALL US TODAY!!! ON 01-546-7256 



Prices Include VAT and POSTAGE 
and are correct on going lo press. 
Order by post or phone, using 
cheque. Access. Barclaycard or 
postal order. Despatch Is by same 
day 1st CLASS posl Product data 
available on request or phone for 
advice If In doubt |REF A35| 




LAKESIDE HOUSE, KINGSTON HILL. SURREY. KT2 7QT. TEL 01-546-7256 



All pritei Include PftP and VAT. Send cheque. Postal Order of Credit Card No. 
Credit Card order Accepted by phone. Calleri welcome. Wide range of good* 
Hocked. Trade enquiries welcome. European orderi tend price ai advertiiad. 
Outude Europe (2.00 for elrmiiM. Mall order to Evesham Shop please. 

EVESHAM MICROS MICRO CENTRE 1 

BRIDGE STREET. EVESHAM. 1 756 PEI7SHORE ROAD, 

WORCS.. WR1 1 4RY. COTTERIDGE, BIRMINGHAM. | 

Tel:038641989 Tel: 021 -458 4S64 




Dave Crisp takes a look at a 



handy utility that will allow 




How's Your Disk Drive? 

APART FROM THE FACT THAT IT'S 
slow, does il also fail to load some of your 
software? 

Well, the problem could be head 
alignment. That is, the part that moves 
over the disk in your drive. Because of the 
two types of metal used in the head 
mechanism high temperatures cause the 
metals to expand at different rates. The 
result of this is a sloppy head. The answer 
to this is to let the drive cool down and 
hopefully things will be OK again. 

The other cause of mis-alignment is 
more serious. Have you noticed with 
some protected software the drive makes 
a hammering noise like a machine gun? 
This noise is the mechanism being 
'bumped' against the stop. This repeated 
hammering will eventually knock the 
head out of position. 

Would other computer owners put up 
with a situation where software can 
damage the hardware? 

If you are suffering from a badly mis- 
aligned head then this software from 
Evesham Micros may be the answer. 

No Special Equipment 

As far as I know this is the first disk of ite 
type. For the first time it is possible to 
check and remedy head alignment 
without equipment such as oscilloscopes. 

The disk itself has had its tracks 
recorded 'off-line' so that the program 
can interpret what it reads into a 
measurement. 

When I received the copy of the 
software I was relieved as my heads were 
so mis-aligned that it was getting to a 
point where I was finding it difficult to get 
a directory of a disk let alone save 
programs with any degree of confidence. 

The Tests 

There are two main tests: 
1 Speed and Clamping lest 

The speed at which the disk rotates in the 
drive is very important and the 1541 exam 
shows quickly whether this could be the 
first of your problems. 

The software takes 10 measurements 
of your drives speed. This is then con- 
verted into an average speed. This 
average speed should be within -3 to +3 of 



300 rpm (1%). If this is OK the difference 
between the fastest sample and the 
slowest sample is noted and if this is 
greater than 0.6 then this would result in a 
failure. 

2 Radial Head Alignment 

The program reads what data it can from 
off-track disk and shows the result on a 
chart. 

The chart is made up of a display of 
asterisks which shows at a glance how far 
out your drive head is. The chart will also 
show whether the mis-alignment is to the 
inside or outside of the track. 

In the manual provided there are 14 
read-outs- showing results and a remedy 
so whatever result you get you should be 
able to find a chart which looks something 
like the one you obtain. 

There is a third test which checks the 
position of the TRACK 1 STOP. 

This is a metal casting which stops the 
head moving further back than track one. 
It is possible for this casting to become 
misplaced which obviously results in the 
head mis-aligning with that track. 

The program does a stop check and 
shows on the chart whether you need to 
re-align the stop. 

A printout of a chart is shown below. 

Doing The Work 

If after doing the test you decide that 
some work on your drive is required the 



manual will take you through the pro- 
cedure step by step. There is not enough 
space here to allow me to go through the 
procedure but you would need 
confidence in yourability to pokearound 
with a screwdriver without damaging 
anything. If in doubt find somebody who 
feels a little more confident. 

Silence The Gun 

You will also find in the manual a small 
envelope containing two soft metal 
springs. These replace the standard head 
stop. This is a simple job and one that is 
worth doing. 

This does not stop the 'hammering' of 
the drive but it does make the hammering 
very quiet and less damaging. After fitting 
the 'quiet stop' run the test again to 
ensure that it is in the correct position. 

Conclusion 

This is a good buy if you envisage 
problems. Of course if you head is so far 
out of line already you will not be able to 
load the diagnostics anyway. It is a useful 
thing to have and one which most 
Commodore owners would find useful at 
some time in their drive's life. 

At £39.95 it is not cheap but could pay 
for itself. It is available from: Evesham 
Micros, Telephone 0386 41989 or 021- 
458564. 



Listings will be much easier to 
enter with our new system. 




COMMODORE LISTINGS ARE RATHER 
well known for the horrible little black 
blobs that always abound. Unfortunately 
the graphics characters which are used to 
represent graphic and control characters 
do not reproduce very well and they are 
also difficult to find on the Commodore 
keyboard. 

In future all control and graphics 
commands will be replaced by a mnemonic 
within square brackets. This mnemonic is 
not typed out as printed in the magazine 
but rather the corresponding key or keys 
on the keyboard are pressed. For example 
(RIGHT) means press the cursor right key. 
you do not type in [RIGHT]. All of the 
keywords, what keys to press and how 
they are shown on the screen are shown 
below. 

Any character that is accessed by pressing 
shift and a letter will be printed as 
[Sletter]. 

[SAJ shift and A 
[S+] shift and + 

Any character that is accessed by 
pressing the Commodore key and a letter 
will be printed as (Getter) 
|CA| Commodore and A 
(C+l Commodore and + 
(C1] Commodore and 1 



Mnemonic 

[RIGHT] 
LEFT] 
|UP] 

[DOWN] 

[Fl] 

[F2l 

[F3] 
[F4| 



Symbol what to press 






left/right 



shift left/right 

Shift & up 
/down 



up/down 



11 



shift & fl 



f3 



shift & f3 




LISTINGS 



If any characters are repeated the 
mnemonic will be followed by a number. 
This number is how many times you 
should enter the character. Any number 
of spaces over one will also be 
represented in this form 
[RIGHT10] press cursor right 10 times 
[C+10] press Commodore and + 10 
times 

[SPC10] Press the space bar 10 times 



Any other characters should be easily 
recognisable for example CTRL-N means 
press CTRL and N and LEFT-ARROW 
means press the left arrow. 

Any number of mnemonics can be 
enclosed in brackets for example 

(SA10,SPC10,SA10] 

means type 10 shift A's 10 spaces and 
another 10 shift A's. 



Mnemonic 



F5| 



Symbol what to press] I Mnemonic Symbol what to press 



[F6] 



[F7| 



FBI 



[CLEAR] 



HOME] 



RVSON] 



RVSOFF) 



f5 [BLACK] 

shift & f5 I (WHITE) 

f7 [RED] 

shift &f7 ||CYAN| 

shift & CLR 

/HOME I [PURPLE) 





CLR/HOME 



(GREEN) 





CTRL & 9 IBLUE] 




CTRL & 0 



[YELLOW] 



CTRL & 1 



CTRL & 2 



CTRL & 3 



CTRL & 4 



CTRL & 5 



CTRL & 6 



CTRL & 7 



CTRL & 



Lineage: 40p per word. E3 S 

Semi display: £9.00 per single column centimetre 
Ring for information on series bookings/discounts. 



YOUR COMMODORE 

01 -437 0699 

EXT. 291 



All advertisements in this section must be prepaid. 
Advertisements are accepted subject to the terms and conditions 
printed on the advertisement rate card (available on request). 




Send your requirements to: 
STUART TAYLOR 
ASP LTD, 1 GOLDEN SQUARE, 
LONDON W1 



WARNING NOTICE 



Advertisements placed in this magazine are to be in strict compliance with our standard condiWons 
(copies of which conditions are available on request) and on the clear understanding that the advertiser 
warrants that his advertisement(s) does not infringe any copyright or condition of sale of any interested 
party in the advertised product. 

Further the advertiser indemnifies the proprietors of this magazine in respect of costs, damages, or any 
other claims brought against them as a result of legal action arising from the publication of the 
advertisement. 

Any breach of these terms or the said conditions may result in prosecution of the advertiser by the 
proprietors. 



SOFTWARE 



COMMODORE 64 DATABASE - DATAFILE 

Powerful options include: print all-selective records, delete, amend, save. load, 
copy alphanumeric sort, user defined fields, memory check, total numeric 
fields, multi f*eld .ntei relational, global and between limits searches, etc. Fully 
menu driven with comprehensive, easy to use instructions. 
CBM 64 (compiled) cassette f 7.45 

CBM 64 lcomp.led> *** IWM 

COMMODORE 64 WORDPRO - TEXTFILE 

Powerful word processor, facilities include - large teat buffer, auto centre, 
variable tab. insert, amend, delete, copy, move te«t. word count, nght justify, 
paging. |Oin files, multiple file handling, print all/part text. etc. Fully dnven with 
comprehensive, easy to use instructions. Great value. 

CBM 64 (compiled) cassette C8.25 

CBM 64 (compiled) disk c, °- 7 ° 

All programs with full documentation and guarantee and can be used with all 
direct connect CBM 64 printers mclud-ng 1520 print /plotter. Also most 
Centronics Iwith sutiable hardware intertacel. Price includes fast delivery by 
(irst class post. Cheques/POs 10: 

A & C SOFTWARE - 
Dept. 4. 75 Oakthorpe Gardens. Tividale. West Midlands BB9 2LF 
Telephone: 021 557 8596 !7-9pm) 



SPANISH, ARABIC, Portugese, 
Italian word processors lor CBM 
64 C89 each. inc. P&P. vat extra. 
Dealers welcome. DT Promotions, 
Unit-F. Arndale Centre. London 
SW18 4TD Tel: 01 870571 1 . Telex 
8951182 Gecoms. 

SENSATIONAL POSTAL 

soltware bargains tor Amstrad, 
Atari. BBC, Commodore (all 
formats), Electron. Spectrum. For 
free list send a SAE or phone 
Teletex Cleckheaton 0274 
875299 28 Brooklyn Court. 
Bradford Road. Cleckheaton. W. 
Yorks. 



AFFORDABLE SOFTWARE 

Chuckie Egg (c) 6.75 
Winter Games (c) 7.95 
Red Moon (c) 5.75 
Snooker (c) 6.95 
Goonies (c) 7.95 
Solo Flight <c.d) . 11.95 

All prices include postage and 
packing. Send a S.A.E. for price 
list. To order any of the above 
titles send a cheque or postal 
order payable to:- 
J > J SOFT SALES (MAIL ORDER) 
OEPT CU. 17 VERNON ROAD, 
UCKFIELO, SUSSEX. TN22 5DX 



BANKER 64 

it you ate ted up not being able lo keep Hack o( your bank account MpmM 
may be just what you are looking lor. Simple to use as it is menu driven it will hold 
lull details of Credits. Debits, Standing orders and Direct Debus ar>d will auto- 
matically place them .n dale order II will give you statements to screen or printer 
including the 1520 plotter printer Records can be stored on bolh d.sk and tape loi 
complete back-up Entry to any account is by name and Secunty codo which can 
be changed as necessary. This m/c program is very good value at E8.25 disk. %*.oo 

UP " RAMFILE 

Keep track of your Software. Records. Stamp Collection, Addresses etc with this 
easy to use menu driven tilling system Entry titles are user detmeable Powerful 
options include search and amend routines Print routines allows printing of entry 
title, selected entry or complete tile to any printer including the 1520 plotter Files 
can be stored on both disk and tape 

This m/c program is very good value at C6.2S disk, £4.00 tape. 
Special Offer — Both programs £10. Disk Both programs £7.00 Tape 
All prices include VAT P&P Cheques & P.O. to 
RJP ELECTRONICS 
27 Denham W.y, Camber. Rye. East Sussex TN31 7XP Tel: (0797) 225549 



DO YOU READ ME? 

Speed reading course for 
children aged 10+ on 
CBM 64. Cassette or disk 
(1541) £10. Ch/POs or 
SAE for details to:- 

S. HARCOURT, 

17, The Moorings, 

North Lancing, 
Sussex BN15 0PP 



DISK AID 

Menu driven utility inc (He 

recovery, directory reshuffle, fast 

format etc. Saves time and hassle 

with the 1541. £8.95 (inc. P&P) 

BARIM SOFTWARE, 

4, Wellington Road. 
Ashto-d. Midd. TW15 3RJ. 



I SOUTH EAST KENT SOFTWARE 1 

Oepl V/C P.O. Bo» 152 Orpington Kent 

We stock tor Spectrum. Amslrao. Com- 
modore Send SAE to- lull list and print. 
Please state which Postage' Packing SOp. 
overseas Cl 00 
COMMODORE 64 GAMES (TAPE) 

RRP OUR PRICE 



Super Muey 
Ind Jones 
Dam busters 
Spy vs Spy n 
Sfcylox 
Oropzone 
impossible Mission 
Sn'im h Qatnes 
Break Fever 



16.45 
£6 50 



£650 
£7.50 
£6.99 
£6 99 

£11 00 

ISJO 



£8 95 
£9 95 
19 9!; 
£9 95 
Efl K 

a h 

£9 95 
EM H 
£6 95 
BUSINESS (DISK | 

RRP OUR PRICE 
Home Accounts £24.95 £19.95 
Stock Control £24 9* WM| 

Ma» List £19 95 £1550 

EDUCATION 
English. Malta. German. French. History 
RRP £9 95 OUR PRICE £7 95 

Cheques Pffl pay-* Mo J r«-.quso« 
Please. 



allow 2i days delivery 



NEW COMMODORE 64 software 
on disc and tape. I have: Karate 
Champion. Winter Games. Silent 
Service, Last V8, Dan Dare; and 
many new games. Write lor more 
intormation: N. Arntz. Osdorperweg 
565 Amsterdam. Holland. Tel: 020 
190669 



GAMES 



BLOCKBREAKER — C64 

wordgame includes; Challenge 
Games. Gold runs, money, prizes. 
C5.75 Cheque/PO to Drive. 92 
Robin Hood Lane, Birmingham 
B28 0JX. 



GRAPHICS 



I ixii-I II 



For Commodore 64 

• Plan your Graphics 

• Simple to use 
■ 50 A3 sheets 

• Programming GuMe 

^ COMPUTER BITS 
35 Windermere Drtve. I 



TERMS 



CLASSIFIED ADVERTISING 

TERMS & CONDITIONS 

Our terms (or new advertisers (seml- 
dlsplay and lineage) are strictly pro- 
form* payments until satisfactory 
reference can f>« taken up (excluding 
recognised advertising agendas). 
Cheques and PO'i should be crossed 

and made payable to: 
ARGUS SPECIALIST PUBICATIONS 
LTD.. 

and send together with the 
advartlMmant to: 
THE CLASSIFIED DEPT.. UM, 
NO: 1 GOLDEN SQUARE. LONDON, 

W1A 3AB. 
There are no reimbursements tor 
cancellations. Advertisements arriving 
too late tor a partlclular Issue will be 
Inserted In the loJowIng Issue unless 
accompanied by Instruction to the 
contrary. 

All advertising sales are subject lo 
Government regulations concerning 
VAT. Advertisers are responsible tor 
complying with the various legal 
requirements In lorce eg: The Trade 
Description ACL Ses Olacrlmlnatlon 
Acl a The Business Advertisements 

(Disclosure) Order 1977. 
FULL TERMS « CONDITIONS Of 
ADVERTISING AVAILABLE ON 
REQUEST 



LIBRARY 

ATTENTION BBC USERS 

A SUBSIDIARY OF PLATINUM GOLD 



HARDWARE 



• OVER 4,000 different titles available tor hire for the COM- 
MODORE, SPECTRUM, BBC, AMSTRAD, ATARI and 
MSX computers. 

' ARCADE, ADVENTURE, EDUCATIONAL and BUSI- 
NESS software too. 

• HIRE PRICES from only 75p INC. P&P. 

• 20% DISCOUNT off all purchase software. 
■ FREE CATALOGUES. 

• FREE HINTS AND TIPS. 

' FAST RETURN OF POST SERVICE (if reserves are 
given). 

• ALL GAMES manufactures ORIGINALS with full 
documentation. 

' OVER 6.000 satisfied members. 

" EUROPEAN members welcome. 

• Fully computerised system keeps track of your order. We 
pride ourselves in being the most professional Hire Library 
in the United Kingdom, with staff of 1 4 who knows what the 
word service means. Backed by our own software com- 
pany and programmers. 

MID LAND~ ZO MPU TE R~ UBR AR Y~ 

28 College Street, Worcester WR1 2LS. Tel: 0905 611072 

Please enclose £6 tor Life Membership or send a SAE lor Iree catalogue 
slating machine. 

Name: 

Address: 



REPAIRS 



COMMODORE 
REPAIRS' 



WHY PAY HIGH 
FIXED' PRICES 




FOB PROFESSIONAL ISM - Of all ihe 
reoMroompenie Siniau jw 
M MANCOMP WW) W MOST 
PROFESSIONAL when R c*r* to tO.Kt 
am a ftapful attitude" AUG 85 

WHY DELAY - OUR ESTIMATES ABE 
FBEE ANO WITHOUT OBLIGATION IF 
YOU DO NOT LIKE OUB ESTIMATE 
wt will RETURK THE C0*m.rF.H 
and ref uno the postage 
incurred' 

MANCOMPlto 
(Dept YC2) 

Printworks Une.levenshulrr*. 

Manchester M193JP 
OPEN MON • SAT 9am to 7pm 



FOR SALE 



Commodore 64 — £15. Vic 20 
— £12.50, Spectrum — 
£10.50, OL - £30, 1541 Disk 
Drives — £20, and all Com- 
modore systems. Send faulty 
machine with note describing 
fault to: 

TRIDENT ENTERPRISES 
LTD 

UNIT 7. WENTWORTH INDUSTRIAL 
COURT. GOODWIN ROAD. BR IT WEIL, 
SLOUGH TEL: 0735 21391 

Ovcrten enquiries welcome. 
(Above prices are exclusive ol 
id VAT). 



TO FILL 
THIS 
SPACE 
RING 
STUART 
TAYLOR 
01-437 0699 



NEW STAR SG-10C PRINTER 

ONLY E249 TO INCLUDE VAT & NEXT DAY 
DELIVERY BY SECURIC0R 

100% compatible wilh your Commodore computet 

120cps drafl mode. 

Tractor and friction feed standard. 

Near Letter Quality mode included 

192 graphic mode characters. 

192 business mode characters 

90 italic characters. 

90 NLQ characters. 

Normal 80 cpl. Condensed 136 cpl. 

Enlarged 2X. 3X & 4X. 

Supplied with interface/cable and mams plug READY TO GO 

STRONG COMPUTER SYSTEMS 

8RYMA COTTAGE. PENIEL. CARMARTHEN. 0YFE0 SA32 7DJ 

TEL 102671 231246 FOR ASSISTANCE!!! C64 



* BACK-UP-SYSTEMS FOR CBM-64 & VIC-20 * 

The BACK-UP-BOARO Mk. 1 •» the fastest, and easiest way lo back up your tape 
programs. With this board you can connect a second CBM cassette deck to your 
computer. You can copy a program on the second deck while the original loads from 
the first. You can back up all last loaders, data files, etc BACK-UP- BOARD Mk 1 
£1000 Inc. P&P 

BACK-UP-BOARD Mk 2 This new version of our famous BACK-UP-BOARD is now 
proving so popular It Is outselling our original Mk I This new board now works two 
ways Switched to NORMAL' ll operates as the Mk I Switched to 'GENERATE'. '64' 
owners can use our special Iransler software lo regenerate a copy ol a program on the 
second deck as it loads from (he first This method can produce a bettei quality copy 
than the original. BACK-UP-BOARD Mk 2 & Software £14 50 mc P&P Conversion 
service. Return your Mk. I Board, if purchased from us. to be modified to Mk 2 for 
£450 including software & P&P 

AZIMUTH HEAD ALIGNMENT TAPE by INTERCEPTOR tor 64* Use this test tape 
with your tW to adjust the heads ol your decks to make a perfectly matched pair. Full 
instructions and screwdriver supplied £8.50 inc P&P 

ROM SWITCH/RESET BOARD. Fit this board in the expansion port of your '64' and 
you can reset ALL programs. Resets programs that a standard reset swllch can't. A 
socket tor a 2764 8K eprom is also fitted Full instructions supplied. £8.96 inc. P&P 
Please send SAE lor more details of Ihe above products Send your cheque/PO lo 

TURBOTRONIC 
46 Rlpon St., Parkinson Lane, Halifax, West Yorkshire HX1 3UG. 
Tel: (0422) 52020 
(Europe add 50p outside Europe add £1.50) 




We use only 
10% of our 
fSi mental 
potentials 



Tf««t at* the wdi ol Albert En.te-o. 
Bie greater phttiost o< recam i.mei 

L Ron MvBba'tfi discoveries Hi 
i-MO or e-o "i-id prove today mat EMMIn 

"""his nook -OIANETICS: Tito Modern 
Scieix* ol Mental HaelttT L Ron Mub- 
Mro aiubi on* mora gianl Heo In irui 
direction. 

Ha revean no* anyone can use hi* 01s- 
covenes 10 isWeie ma aiacl barriers Dial 
have so tar prevented paopla from using 
the* n\ent«i potent** 10 the hih. 

Mora and mo«a pood* from al wa*s 
of We use Oiar*»esiecrir*icw today. 

Tha many —man reports on man suc- 
cau ara in* Mat prooT ol the quality ol 
«*■* book. 

F.nd our "or yourse* Order your copy 
or viii ramarkaont boo* today. 

Pnoe O.M papaibac* C17S0 nard- 
Dacft. M««a cMwjoea and POa payable lo 
S.M.f. Sand to Chi-cn W SeienWogy 
Saint ran Foundanoo. FREEPOST IVC t| 
East Orlnsteod. Suua. RH19 4ZA (no 
Mamp iequ*ed). 



Super Breaker 
Back-Up Board 

For the Commodore 64. CBM 128 and 
ViC-20. When a second CBM lype cas- 
sette umi is connected lo ihe board il 
will make security back-up copies of 
cassetie based software, inicudmg 
Turbo/Fast Loaders. Basic and/ or 
Machine Code and Data Files No 
additional software is needed. Very 
User Friendly, the back-up copy is 
made on the second cassette while the 
original is loading on the first. Price at 
£8.95 Plus P&P 

RESET CARTRIDGE for CBM 64 This 
cartridge will reset all. yes all. memory 
resident programs. Including all pro- 
grams whore standard reset switches 
fail. Price £7.96 • P&P 
64 REPAIRS Fast reliable repairs, sii 
months warranty on replaced parts. 
£14 95 to £28. 75 inc. parts, labour. P&P. 
insurance • VAT. 

P&P 55p UK (Europe add £1.00. else- 
where add £2.00). Send cheque/postal 
order, or a stamp (or details, to: 
C. Kent. 26 Northcape Walk, 
Corby. Northanls. NN18 9DQ. 
For enquiries telephone (0536) 742622 



FOR HIRE 



Hire & Exchange Software. 
Ejrhiatr. your software! Phone or 

send lilt ol your software and ask 

for details. Software hire! No 
membership charge. P4P free. Hire 
tapes from £1.50. Phone for details. 

TAP Software, 4 Mai ate Road, 
Newland. Dm, Seiby. North Vorks. 
Tel: 0757 611007. 



MOONRAKER £6.95 

CBM64 Space Game features fast 
• Fly-into Rolling Radar Display 
e Intra Red Target Screen 



Send your name, addraaa a PO cheque to 

J A J Gllmour Ltd.. 
Dept YCt*6, 4 Copse Close. Lit*. 
Hampshire GU33 7EW, England. 
Tel: 0730-893430. 



GADGET 64 £5.95 

This 100', machine code CBM64 
cassette utility offers: Append, Delete. 
Renumber (Including Goto. Gosub. etc.) 
Satisfyingly simple to use. Send your 
Name. Address & PO or Cheque tor 
£5.95 (P&P Free) to: 

J & J Gllmour Ltd., 

Depi -C1B6. a Copse Close. Llss, 
Hampshire GU33 7EW. England. 



ACCESSORIES 



PERIPHERAL BARGAINS 

Ouickshol II Joystick £8.75 
Gunsho! II Joystick £8.75 
C- 16 adaptor (tor above) £3.95 
Reset switch (VIC 207 
CBM 64) £3.95 

Will reset all m-code programs. 
Price includes Basic recovery 
program. 

Copier CP! Digital interlace. 
Copies all Turbos, m/code, etc 
IC controlled. No software 
needed. Just type load. II it 
loads, CPl will copy it. Requires 
second datasetle. 12 months 
guarantee C9.50. 
Free P&P UK, Europe add 
£1.50, resi add £2.50. 
Send Ch/PO to: 
DATALINE 

246 Horbury Rd., 
Wakefield WF2 8RE. 



SOFTWARE 
APPLICATIONS 



HOME ACCOUNTS 

Put your house in order? 
Probably home computing's 
best use! Comprehensive 
coverage of bank accounts. 
Credit cards, HP in-built 
accuracy check. Reocrds all 
transactions. Projects cash- 
flow for any period ahead. 
Available for C16 CBM64 or 
VIC-20. £8.45 or free details 
from: 

Discus Software 

Freepost, 
Beach Approach 
Brixham TQ5 8BR 
Tel: 08045 55532 




+57 oW. 



FOR HIRE 



COMMODORE 64 cassette 
library. Hire latest games and 
educational software, only one 
price £1.50 per cassette 7 days 
hire. Details S.A.E. please: C.C.L., 
19 Darrell Way, Abingdon. OX14 



FOR SALE 



FOR HIRE 



BUY OR SELL your unwanted 
software, books, and hardware. We 
put you directly in contact wilh 
each other in your area. Details: 
Second Hand Computer Sales 
Agency. 38, Bowling Alley Walks, 
Dorchester. Dorset. Tel (0305) 
64849 (24 hrs). 



CBM64 S6FTWARE DISCOUNTS 

Spy v Spy 2 £7.30, Kennedy Approach 
£10 95. Sabre Wolf £7 30. Underwurlde 
£7.30. Hackot £7 20. Rocky Horror 
Show £6 66 Cheque/PO lo: 
SoUware Unlimited. PO Box 65. 
6 Thurland St. Nottingham NG1. 
Tel: (0602) 470897. 
Full 1.11 - 



*itn order 



BRITISH BATTLESHIPS 1892- 
1960 CBM 64 Four preferential/ 
educational cassette volumes 
C2.85 each or information from C. 
Lewis. 84 Station Road, Wraysbury 
Berks TW19 5NH 



DONT LEAVE IT TO CHANCE! 
GIVE YOUR BUSINESS A BOOST 
BY ADVERTISING IN 
YOUR COMMODORE 
PHONE STUART TAYLOR ON 01-437 0699 
FOR DETAILS 



YOUR COMMODORE — CLASSIFIED ADVERTISEMENT - ORDER FORM 



Advertise nationally in these 
columns for only 40p per word (min 
charge 15 words). Simply print your 
message in the coupon and send 
with your cheque or postal order 
made payable to Argus Specialist 
Publications Ltd to: 

STUART TAYLOR 

ASP LTD, 1 GOLDEN SQUARE, 

LONDON W1 

Tel: 01-437 0699 



Name.... 
Address. 



ADVERTISERS PLEASE ADD 15% VAT Tel n0 (day) 

Please place my advert in YOUR COMMODORE for issues. 

Please indicate no. of insertions required. 



jdyYOU CHOOSE 
J^T THE ACTION IN 

HtfERC 



FROM PAUL WOAKES 
AUTHOR OF ENCOUNTER! 




Mercenary - a unique combination of flight 
simulation, adventure and arcade fun. You choose 
the action. 

There is complete freedom of movement in 
a truly three-dimensional vector-graphic environ- 
ment Graphics of exceptional speed create a 
very realistic experience. 

You'll never play the same game twice. 
Random elements attempt to seal your fate. 
Your interaction is crucial. 

Mercenary presents an absorbing challenge 
that you will accept again and again. 



Hi 



i 



-I H 



■ # 



1 1 "■*""[ 




i N N 









IITIAL REL 
DR COMMODORE 



8K 800 XL 130 HE 

DISK £12.95 



CASSETTE £9.95 DISK £12.95 

NOVAGEN SOFTWARE LTD: SALES 142 ALCESTEB ROAD BIRMINGHAM BlWi! 




- the sophisticated spreadsheet ! 



Easy to learn, easy to use - something that can't be said of many business programs. 
But it's true of all the programs in the BUSICALC series. 

BUSICALC 3 can handle all sorts of jobs - budgets, expenditure analysis, stock lists 
price lists, and product costing are just a few of the possibilities. Three-dimensional 
formulae automatically access data stored on disk, so that you can easily pull 
together information from several different sheets and summarise or manipulate it. 

It's simple to transfer data to other programs such as Easy Script. And you can use 
virtually any printer with BUSICALC 3, whether dot matrix or daisy wheel. 
Commodore or non-Commodore. 

For the CBM 64 and PET/CBM 4000 & 8000 series. 
Available through dealers or from: 

Supersoft, Winchester House, Canning Road, Harrow HA3 7SJ 
Phone 01-861 1 166 for more details and a free catalogue.